home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / Bloodshed Dev-C++ 2.0 / _SETUP.1 / Structures.h < prev    next >
C/C++ Source or Header  |  1998-01-17  |  102KB  |  4,539 lines

  1. /* 
  2.    Structures.h
  3.  
  4.    Declarations for all the Windows32 API Structures
  5.  
  6.    Copyright (C) 1996 Free Software Foundation, Inc.
  7.  
  8.    Author:  Scott Christley <scottc@net-community.com>
  9.    Date: 1996
  10.    
  11.    This file is part of the Windows32 API Library.
  12.  
  13.    This library is free software; you can redistribute it and/or
  14.    modify it under the terms of the GNU Library General Public
  15.    License as published by the Free Software Foundation; either
  16.    version 2 of the License, or (at your option) any later version.
  17.    
  18.    This library is distributed in the hope that it will be useful,
  19.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  20.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  21.    Library General Public License for more details.
  22.  
  23.    If you are interested in a warranty or support for this source code,
  24.    contact Scott Christley <scottc@net-community.com> for more information.
  25.    
  26.    You should have received a copy of the GNU Library General Public
  27.    License along with this library; see the file COPYING.LIB.
  28.    If not, write to the Free Software Foundation, 
  29.    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  30. */ 
  31.  
  32. #ifndef _GNU_H_WINDOWS32_STRUCTURES
  33. #define _GNU_H_WINDOWS32_STRUCTURES
  34.  
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif /* __cplusplus */
  38.  
  39. typedef struct _ABC {
  40.   int     abcA; 
  41.   UINT    abcB; 
  42.   int     abcC; 
  43. } ABC, *LPABC; 
  44.  
  45. typedef struct _ABCFLOAT {
  46.   FLOAT   abcfA; 
  47.   FLOAT   abcfB; 
  48.   FLOAT   abcfC; 
  49. } ABCFLOAT, *LPABCFLOAT; 
  50.  
  51. typedef struct tagACCEL {
  52.   BYTE   fVirt; 
  53.   WORD   key; 
  54.   WORD   cmd; 
  55. } ACCEL, *LPACCEL; 
  56.  
  57. typedef struct _ACE_HEADER {
  58.   BYTE AceType; 
  59.   BYTE AceFlags; 
  60.   WORD AceSize; 
  61. } ACE_HEADER; 
  62.  
  63. typedef DWORD ACCESS_MASK; 
  64. typedef ACCESS_MASK REGSAM;
  65.  
  66. typedef struct _ACCESS_ALLOWED_ACE {
  67.   ACE_HEADER Header; 
  68.   ACCESS_MASK Mask; 
  69.   DWORD SidStart; 
  70. } ACCESS_ALLOWED_ACE; 
  71.  
  72. typedef struct _ACCESS_DENIED_ACE {
  73.   ACE_HEADER  Header; 
  74.   ACCESS_MASK Mask; 
  75.   DWORD       SidStart; 
  76. } ACCESS_DENIED_ACE; 
  77.  
  78. typedef struct tagACCESSTIMEOUT {
  79.   UINT  cbSize; 
  80.   DWORD dwFlags; 
  81.   DWORD iTimeOutMSec; 
  82. } ACCESSTIMEOUT; 
  83.  
  84. typedef struct _ACL {
  85.   BYTE AclRevision; 
  86.   BYTE Sbz1; 
  87.   WORD AclSize; 
  88.   WORD AceCount; 
  89.   WORD Sbz2; 
  90. } ACL, *PACL; 
  91.  
  92. typedef struct _ACL_REVISION_INFORMATION {    
  93.   DWORD   AclRevision; 
  94. } ACL_REVISION_INFORMATION; 
  95.  
  96. typedef struct _ACL_SIZE_INFORMATION {
  97.   DWORD   AceCount; 
  98.   DWORD   AclBytesInUse; 
  99.   DWORD   AclBytesFree; 
  100. } ACL_SIZE_INFORMATION; 
  101.  
  102. typedef struct _ACTION_HEADER {
  103.   ULONG   transport_id; 
  104.   USHORT  action_code; 
  105.   USHORT  reserved; 
  106. } ACTION_HEADER; 
  107.  
  108. typedef struct _ADAPTER_STATUS {
  109.   UCHAR   adapter_address[6]; 
  110.   UCHAR   rev_major; 
  111.   UCHAR   reserved0; 
  112.   UCHAR   adapter_type; 
  113.   UCHAR   rev_minor; 
  114.   WORD    duration; 
  115.   WORD    frmr_recv; 
  116.   WORD    frmr_xmit; 
  117.   WORD    iframe_recv_err; 
  118.   WORD    xmit_aborts; 
  119.   DWORD   xmit_success; 
  120.   DWORD   recv_success; 
  121.   WORD    iframe_xmit_err; 
  122.   WORD    recv_buff_unavail; 
  123.   WORD    t1_timeouts; 
  124.   WORD    ti_timeouts; 
  125.   DWORD   reserved1; 
  126.   WORD    free_ncbs; 
  127.   WORD    max_cfg_ncbs; 
  128.   WORD    max_ncbs; 
  129.   WORD    xmit_buf_unavail; 
  130.   WORD    max_dgram_size; 
  131.   WORD    pending_sess; 
  132.   WORD    max_cfg_sess; 
  133.   WORD    max_sess; 
  134.   WORD    max_sess_pkt_size; 
  135.   WORD    name_count; 
  136. } ADAPTER_STATUS; 
  137.  
  138. typedef struct _ADDJOB_INFO_1 {
  139.   LPTSTR  Path; 
  140.   DWORD   JobId; 
  141. } ADDJOB_INFO_1; 
  142.  
  143. typedef struct tagANIMATIONINFO { 
  144.   UINT cbSize; 
  145.   int  iMinAnimate; 
  146. } ANIMATIONINFO, *LPANIMATIONINFO; 
  147.  
  148. typedef struct _RECT {  
  149.   LONG left;       
  150.   LONG top;        
  151.   LONG right;      
  152.   LONG bottom;     
  153. } RECT, *LPRECT, *PRECT; 
  154.  
  155. typedef struct _RECTL { 
  156.   LONG left;     
  157.   LONG top;      
  158.   LONG right;    
  159.   LONG bottom;   
  160. } RECTL; 
  161.  
  162. typedef struct _AppBarData {
  163.   DWORD  cbSize;           
  164.   HWND   hWnd;             
  165.   UINT   uCallbackMessage; 
  166.   UINT   uEdge;            
  167.   RECT   rc;               
  168.   LPARAM lParam;           
  169. } APPBARDATA, *PAPPBARDATA; 
  170.  
  171. typedef struct tagBITMAP
  172. {
  173.   LONG        bmType;
  174.   LONG        bmWidth;
  175.   LONG        bmHeight;
  176.   LONG        bmWidthBytes;
  177.   WORD        bmPlanes;
  178.   WORD        bmBitsPixel;
  179.   LPVOID      bmBits;
  180. } BITMAP, *PBITMAP,   *NPBITMAP,   *LPBITMAP;
  181.  
  182. typedef struct tagBITMAPCOREHEADER {
  183.   DWORD   bcSize; 
  184.   WORD    bcWidth; 
  185.   WORD    bcHeight; 
  186.   WORD    bcPlanes; 
  187.   WORD    bcBitCount; 
  188. } BITMAPCOREHEADER; 
  189.  
  190. typedef struct tagRGBTRIPLE { 
  191.   BYTE rgbtBlue; 
  192.   BYTE rgbtGreen; 
  193.   BYTE rgbtRed; 
  194. } RGBTRIPLE; 
  195.  
  196. typedef struct _BITMAPCOREINFO {
  197.   BITMAPCOREHEADER  bmciHeader; 
  198.   RGBTRIPLE         bmciColors[1]; 
  199. } BITMAPCOREINFO, *PBITMAPCOREINFO, *LPBITMAPCOREINFO; 
  200.  
  201. typedef struct tagBITMAPFILEHEADER {
  202.   WORD    bfType; 
  203.   DWORD   bfSize; 
  204.   WORD    bfReserved1; 
  205.   WORD    bfReserved2; 
  206.   DWORD   bfOffBits; 
  207. } BITMAPFILEHEADER; 
  208.  
  209. typedef struct tagBITMAPINFOHEADER {
  210.   DWORD  biSize; 
  211.   LONG   biWidth; 
  212.   LONG   biHeight; 
  213.   WORD   biPlanes; 
  214.   WORD   biBitCount; 
  215.   DWORD  biCompression; 
  216.   DWORD  biSizeImage; 
  217.   LONG   biXPelsPerMeter; 
  218.   LONG   biYPelsPerMeter; 
  219.   DWORD  biClrUsed; 
  220.   DWORD  biClrImportant; 
  221. } BITMAPINFOHEADER, *LPBITMAPINFOHEADER, *PBITMAPINFO; 
  222.  
  223. typedef struct tagRGBQUAD { 
  224.   BYTE    rgbBlue; 
  225.   BYTE    rgbGreen; 
  226.   BYTE    rgbRed; 
  227.   BYTE    rgbReserved; 
  228. } RGBQUAD; 
  229.  
  230. typedef struct tagBITMAPINFO {
  231.   BITMAPINFOHEADER bmiHeader; 
  232.   RGBQUAD          bmiColors[1]; 
  233. } BITMAPINFO, *LPBITMAPINFO; 
  234.  
  235. typedef long FXPT2DOT30,  * LPFXPT2DOT30;
  236.  
  237. typedef struct tagCIEXYZ
  238. {
  239.   FXPT2DOT30 ciexyzX; 
  240.   FXPT2DOT30 ciexyzY; 
  241.   FXPT2DOT30 ciexyzZ; 
  242. } CIEXYZ;
  243. typedef CIEXYZ  * LPCIEXYZ; 
  244.  
  245. typedef struct tagCIEXYZTRIPLE
  246. {
  247.   CIEXYZ  ciexyzRed; 
  248.   CIEXYZ  ciexyzGreen; 
  249.   CIEXYZ  ciexyzBlue; 
  250. } CIEXYZTRIPLE;
  251. typedef CIEXYZTRIPLE  * LPCIEXYZTRIPLE; 
  252.  
  253. typedef struct {
  254.   DWORD        bV4Size;
  255.   LONG         bV4Width;
  256.   LONG         bV4Height;
  257.   WORD         bV4Planes;
  258.   WORD         bV4BitCount;
  259.   DWORD        bV4V4Compression;
  260.   DWORD        bV4SizeImage;
  261.   LONG         bV4XPelsPerMeter;
  262.   LONG         bV4YPelsPerMeter;
  263.   DWORD        bV4ClrUsed;
  264.   DWORD        bV4ClrImportant;
  265.   DWORD        bV4RedMask;
  266.   DWORD        bV4GreenMask;
  267.   DWORD        bV4BlueMask;
  268.   DWORD        bV4AlphaMask;
  269.   DWORD        bV4CSType;
  270.   CIEXYZTRIPLE bV4Endpoints;
  271.   DWORD        bV4GammaRed;
  272.   DWORD        bV4GammaGreen;
  273.   DWORD        bV4GammaBlue;
  274. } BITMAPV4HEADER,   *LPBITMAPV4HEADER, *PBITMAPV4HEADER; 
  275.  
  276. typedef struct _BLOB { 
  277.   ULONG   cbSize; 
  278.   BYTE    *pBlobData; 
  279. } BLOB; 
  280.  
  281. typedef struct _SHITEMID {       
  282.   USHORT cb;       
  283.   BYTE   abID[1];  
  284. } SHITEMID, * LPSHITEMID; 
  285. typedef const SHITEMID  * LPCSHITEMID; 
  286.  
  287. typedef struct _ITEMIDLIST { 
  288.   SHITEMID mkid;  
  289. } ITEMIDLIST, * LPITEMIDLIST; 
  290. typedef const ITEMIDLIST * LPCITEMIDLIST; 
  291.  
  292. typedef struct _browseinfo { 
  293.   HWND hwndOwner;          
  294.   LPCITEMIDLIST pidlRoot;  
  295.   LPSTR pszDisplayName;    
  296.   LPCSTR lpszTitle;        
  297.   UINT ulFlags;            
  298.   BFFCALLBACK lpfn;        
  299.   LPARAM lParam;           
  300.   int iImage;              
  301. } BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO; 
  302.  
  303. typedef struct _FILETIME { 
  304.   DWORD dwLowDateTime; 
  305.   DWORD dwHighDateTime; 
  306. } FILETIME, *LPFILETIME, *PFILETIME; 
  307.  
  308. typedef struct _BY_HANDLE_FILE_INFORMATION {
  309.   DWORD    dwFileAttributes; 
  310.   FILETIME ftCreationTime; 
  311.   FILETIME ftLastAccessTime; 
  312.   FILETIME ftLastWriteTime; 
  313.   DWORD    dwVolumeSerialNumber; 
  314.   DWORD    nFileSizeHigh; 
  315.   DWORD    nFileSizeLow; 
  316.   DWORD    nNumberOfLinks; 
  317.   DWORD    nFileIndexHigh; 
  318.   DWORD    nFileIndexLow; 
  319. } BY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION; 
  320.  
  321. typedef struct _FIXED { 
  322.   WORD  fract; 
  323.   short value; 
  324. } FIXED; 
  325.  
  326. typedef struct tagPOINT { 
  327.   LONG x; 
  328.   LONG y; 
  329. } POINT, *LPPOINT, *PPOINT;
  330.  
  331. typedef struct tagPOINTFX { 
  332.   FIXED x; 
  333.   FIXED y; 
  334. } POINTFX; 
  335.  
  336. typedef struct _POINTL { 
  337.   LONG x; 
  338.   LONG y; 
  339. } POINTL; 
  340.  
  341. typedef struct tagPOINTS { 
  342.   SHORT x;    
  343.   SHORT y;    
  344. } POINTS; 
  345.  
  346. typedef struct _tagCANDIDATEFORM {
  347.   DWORD  dwIndex;       
  348.   DWORD  dwStyle;       
  349.   POINT  ptCurrentPos;  
  350.   RECT   rcArea;        
  351. } CANDIDATEFORM, *LPCANDIDATEFORM;
  352.  
  353. typedef struct _tagCANDIDATELIST {
  354.   DWORD  dwSize;       
  355.   DWORD  dwStyle;      
  356.   DWORD  dwCount;      
  357.   DWORD  dwSelection;  
  358.   DWORD  dwPageStart;  
  359.   DWORD  dwPageSize;   
  360.   DWORD  dwOffset[1];
  361. } CANDIDATELIST, *LPCANDIDATELIST;
  362.  
  363. typedef struct tagCREATESTRUCT { 
  364.   LPVOID    lpCreateParams;  
  365.   HINSTANCE hInstance;       
  366.   HMENU     hMenu;           
  367.   HWND      hwndParent;      
  368.   int       cy;              
  369.   int       cx;              
  370.   int       y;               
  371.   int       x;               
  372.   LONG      style;           
  373.   LPCTSTR   lpszName;        
  374.   LPCTSTR   lpszClass;       
  375.   DWORD     dwExStyle;       
  376. } CREATESTRUCT, *LPCREATESTRUCT; 
  377.  
  378. typedef struct tagCBT_CREATEWND {
  379.   LPCREATESTRUCT lpcs; 
  380.   HWND           hwndInsertAfter; 
  381. } CBT_CREATEWND; 
  382.  
  383. typedef struct tagCBTACTIVATESTRUCT {
  384.   WINBOOL fMouse; 
  385.   HWND hWndActive; 
  386. } CBTACTIVATESTRUCT; 
  387.  
  388. typedef struct _CHAR_INFO {
  389.   union {               
  390.     WCHAR UnicodeChar; 
  391.     CHAR AsciiChar; 
  392.   } Char; 
  393.   WORD Attributes;      
  394. } CHAR_INFO, *PCHAR_INFO; 
  395.  
  396. typedef struct _charformat { 
  397.   UINT     cbSize; 
  398.   DWORD    dwMask; 
  399.   DWORD    dwEffects; 
  400.   LONG     yHeight; 
  401.   LONG     yOffset; 
  402.   COLORREF crTextColor; 
  403.   BYTE     bCharSet; 
  404.   BYTE     bPitchAndFamily; 
  405.   TCHAR    szFaceName[LF_FACESIZE]; 
  406. } CHARFORMAT; 
  407.  
  408. typedef struct _charrange { 
  409.   LONG cpMin; 
  410.   LONG cpMax; 
  411. } CHARRANGE; 
  412.  
  413. typedef struct tagCHARSET {
  414.   DWORD aflBlock[3]; 
  415.   DWORD flLang; 
  416. } CHARSET; 
  417.  
  418. typedef struct tagFONTSIGNATURE {
  419.   DWORD  fsUsb[4];
  420.   DWORD  fsCsb[2];
  421. } FONTSIGNATURE, *LPFONTSIGNATURE; 
  422.  
  423. typedef struct {
  424.   UINT ciCharset;
  425.   UINT ciACP;
  426.   FONTSIGNATURE fs;
  427. } CHARSETINFO, *LPCHARSETINFO;
  428.  
  429. typedef struct { 
  430.   DWORD        lStructSize; 
  431.   HWND         hwndOwner; 
  432.   HWND         hInstance; 
  433.   COLORREF     rgbResult; 
  434.   COLORREF*    lpCustColors; 
  435.   DWORD        Flags; 
  436.   LPARAM       lCustData; 
  437.   LPCCHOOKPROC lpfnHook; 
  438.   LPCTSTR      lpTemplateName; 
  439. } CHOOSECOLOR, *LPCHOOSECOLOR; 
  440.  
  441. typedef struct tagLOGFONT { 
  442.   LONG lfHeight; 
  443.   LONG lfWidth; 
  444.   LONG lfEscapement; 
  445.   LONG lfOrientation; 
  446.   LONG lfWeight; 
  447.   BYTE lfItalic; 
  448.   BYTE lfUnderline; 
  449.   BYTE lfStrikeOut; 
  450.   BYTE lfCharSet; 
  451.   BYTE lfOutPrecision; 
  452.   BYTE lfClipPrecision; 
  453.   BYTE lfQuality; 
  454.   BYTE lfPitchAndFamily; 
  455.   TCHAR lfFaceName[LF_FACESIZE]; 
  456. } LOGFONT, *LPLOGFONT, *PLOGFONT; 
  457.  
  458. typedef struct { 
  459.   DWORD        lStructSize; 
  460.   HWND         hwndOwner; 
  461.   HDC          hDC; 
  462.   LPLOGFONT    lpLogFont; 
  463.   INT          iPointSize; 
  464.   DWORD        Flags; 
  465.   DWORD        rgbColors; 
  466.   LPARAM       lCustData; 
  467.   LPCFHOOKPROC lpfnHook; 
  468.   LPCTSTR      lpTemplateName; 
  469.   HINSTANCE    hInstance; 
  470.   LPTSTR       lpszStyle; 
  471.   WORD         nFontType; 
  472.   WORD         ___MISSING_ALIGNMENT__; 
  473.   INT          nSizeMin; 
  474.   INT          nSizeMax; 
  475. } CHOOSEFONT, *LPCHOOSEFONT; 
  476.  
  477. typedef struct _IDA { 
  478.   UINT cidl;     
  479.   UINT aoffset[1]; 
  480. } CIDA, * LPIDA; 
  481.  
  482. typedef struct tagCLIENTCREATESTRUCT {
  483.   HANDLE hWindowMenu; 
  484.   UINT   idFirstChild; 
  485. } CLIENTCREATESTRUCT; 
  486.  
  487. typedef CLIENTCREATESTRUCT *LPCLIENTCREATESTRUCT;
  488.  
  489. typedef struct _CMInvokeCommandInfo { 
  490.   DWORD cbSize;       
  491.   DWORD fMask;        
  492.   HWND hwnd;          
  493.   LPCSTR lpVerb;      
  494.   LPCSTR lpParameters;
  495.   LPCSTR lpDirectory; 
  496.   int nShow;          
  497.   DWORD dwHotKey;     
  498.   HANDLE hIcon;       
  499. } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO; 
  500.  
  501. typedef struct  tagCOLORADJUSTMENT {
  502.   WORD  caSize; 
  503.   WORD  caFlags; 
  504.   WORD  caIlluminantIndex; 
  505.   WORD  caRedGamma; 
  506.   WORD  caGreenGamma; 
  507.   WORD  caBlueGamma; 
  508.   WORD  caReferenceBlack; 
  509.   WORD  caReferenceWhite; 
  510.   SHORT caContrast; 
  511.   SHORT caBrightness; 
  512.   SHORT caColorfulness; 
  513.   SHORT caRedGreenTint; 
  514. } COLORADJUSTMENT, *LPCOLORADJUSTMENT; 
  515.  
  516. typedef struct _COLORMAP { 
  517.   COLORREF from; 
  518.   COLORREF to; 
  519. } COLORMAP,  * LPCOLORMAP; 
  520.  
  521. typedef struct _DCB { 
  522.   DWORD DCBlength;          
  523.   DWORD BaudRate;           
  524.   DWORD fBinary: 1;         
  525.   DWORD fParity: 1;         
  526.   DWORD fOutxCtsFlow:1;     
  527.   DWORD fOutxDsrFlow:1;     
  528.   DWORD fDtrControl:2;      
  529.   DWORD fDsrSensitivity:1;  
  530.   DWORD fTXContinueOnXoff:1;
  531.   DWORD fOutX: 1;        
  532.   DWORD fInX: 1;         
  533.   DWORD fErrorChar: 1;   
  534.   DWORD fNull: 1;        
  535.   DWORD fRtsControl:2;   
  536.   DWORD fAbortOnError:1; 
  537.   DWORD fDummy2:17;      
  538.   WORD wReserved;        
  539.   WORD XonLim;           
  540.   WORD XoffLim;          
  541.   BYTE ByteSize;         
  542.   BYTE Parity;           
  543.   BYTE StopBits;         
  544.   char XonChar;          
  545.   char XoffChar;         
  546.   char ErrorChar;        
  547.   char EofChar;          
  548.   char EvtChar;          
  549.   WORD wReserved1;       
  550. } DCB, *LPDCB; 
  551.  
  552. typedef struct _COMM_CONFIG {
  553.   DWORD dwSize;
  554.   WORD  wVersion; 
  555.   WORD  wReserved;
  556.   DCB   dcb;
  557.   DWORD dwProviderSubType;
  558.   DWORD dwProviderOffset;
  559.   DWORD dwProviderSize;
  560.   WCHAR wcProviderData[1];
  561. } COMMCONFIG, *LPCOMMCONFIG;
  562.  
  563. typedef struct _COMMPROP {
  564.   WORD  wPacketLength;       
  565.   WORD  wPacketVersion;      
  566.   DWORD dwServiceMask;       
  567.   DWORD dwReserved1;         
  568.   DWORD dwMaxTxQueue;        
  569.   DWORD dwMaxRxQueue;        
  570.   DWORD dwMaxBaud;           
  571.   DWORD dwProvSubType;       
  572.   DWORD dwProvCapabilities;  
  573.   DWORD dwSettableParams;    
  574.   DWORD dwSettableBaud;      
  575.   WORD  wSettableData;       
  576.   WORD  wSettableStopParity; 
  577.   DWORD dwCurrentTxQueue;    
  578.   DWORD dwCurrentRxQueue;    
  579.   DWORD dwProvSpec1;         
  580.   DWORD dwProvSpec2;         
  581.   WCHAR wcProvChar[1];       
  582. } COMMPROP, *LPCOMMPROP; 
  583.  
  584. typedef struct _COMMTIMEOUTS {
  585.   DWORD ReadIntervalTimeout; 
  586.   DWORD ReadTotalTimeoutMultiplier; 
  587.   DWORD ReadTotalTimeoutConstant; 
  588.   DWORD WriteTotalTimeoutMultiplier; 
  589.   DWORD WriteTotalTimeoutConstant; 
  590. } COMMTIMEOUTS,*LPCOMMTIMEOUTS; 
  591.  
  592. typedef struct tagCOMPAREITEMSTRUCT {
  593.   UINT  CtlType; 
  594.   UINT  CtlID; 
  595.   HWND  hwndItem; 
  596.   UINT  itemID1; 
  597.   DWORD itemData1; 
  598.   UINT  itemID2; 
  599.   DWORD itemData2; 
  600. } COMPAREITEMSTRUCT; 
  601.  
  602. typedef struct {
  603.   COLORREF crText;        
  604.   COLORREF crBackground;  
  605.   DWORD dwEffects;        
  606. } COMPCOLOR;
  607.  
  608. typedef struct _tagCOMPOSITIONFORM {
  609.   DWORD  dwStyle;       
  610.   POINT  ptCurrentPos;  
  611.   RECT   rcArea;        
  612. } COMPOSITIONFORM, *LPCOMPOSITIONFORM;
  613.  
  614. typedef struct _COMSTAT {
  615.   DWORD fCtsHold : 1;   
  616.   DWORD fDsrHold : 1;   
  617.   DWORD fRlsdHold : 1;  
  618.   DWORD fXoffHold : 1;  
  619.   DWORD fXoffSent : 1;  
  620.   DWORD fEof : 1;       
  621.   DWORD fTxim : 1;      
  622.   DWORD fReserved : 25; 
  623.   DWORD cbInQue;        
  624.   DWORD cbOutQue;       
  625. } COMSTAT, *LPCOMSTAT; 
  626.  
  627. typedef struct _CONSOLE_CURSOR_INFO {
  628.   DWORD  dwSize; 
  629.   WINBOOL   bVisible; 
  630. } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO; 
  631.  
  632. typedef struct _COORD {
  633.   SHORT X;    
  634.   SHORT Y;    
  635. } COORD; 
  636.  
  637. typedef struct _SMALL_RECT { 
  638.   SHORT Left;      
  639.   SHORT Top;       
  640.   SHORT Right;     
  641.   SHORT Bottom;    
  642. } SMALL_RECT, *PSMALL_RECT; 
  643.  
  644. typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
  645.   COORD      dwSize; 
  646.   COORD      dwCursorPosition; 
  647.   WORD       wAttributes; 
  648.   SMALL_RECT srWindow; 
  649.   COORD      dwMaximumWindowSize; 
  650. } CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO ; 
  651.  
  652. #ifdef __i386__
  653.  
  654. typedef struct _FLOATING_SAVE_AREA {
  655.     DWORD   ControlWord;
  656.     DWORD   StatusWord;
  657.     DWORD   TagWord;
  658.     DWORD   ErrorOffset;
  659.     DWORD   ErrorSelector;
  660.     DWORD   DataOffset;
  661.     DWORD   DataSelector;
  662.     BYTE    RegisterArea[80];
  663.     DWORD   Cr0NpxState;
  664. } FLOATING_SAVE_AREA;
  665.  
  666. typedef struct _CONTEXT {
  667.     DWORD ContextFlags;
  668.  
  669.     DWORD   Dr0;
  670.     DWORD   Dr1;
  671.     DWORD   Dr2;
  672.     DWORD   Dr3;
  673.     DWORD   Dr6;
  674.     DWORD   Dr7;
  675.  
  676.     FLOATING_SAVE_AREA FloatSave;
  677.  
  678.     DWORD   SegGs;
  679.     DWORD   SegFs;
  680.     DWORD   SegEs;
  681.     DWORD   SegDs;
  682.  
  683.     DWORD   Edi;
  684.     DWORD   Esi;
  685.     DWORD   Ebx;
  686.     DWORD   Edx;
  687.     DWORD   Ecx;
  688.     DWORD   Eax;
  689.  
  690.     DWORD   Ebp;
  691.     DWORD   Eip;
  692.     DWORD   SegCs; 
  693.     DWORD   EFlags;
  694.     DWORD   Esp;
  695.     DWORD   SegSs;
  696. } CONTEXT, *PCONTEXT, *LPCONTEXT;
  697.  
  698. #else /* __ppc__ */
  699.  
  700. typedef struct
  701.   {
  702.     /* Floating point registers returned when CONTEXT_FLOATING_POINT is set */
  703.     double Fpr0;
  704.     double Fpr1;
  705.     double Fpr2;
  706.     double Fpr3;
  707.     double Fpr4;
  708.     double Fpr5;
  709.     double Fpr6;
  710.     double Fpr7;
  711.     double Fpr8;
  712.     double Fpr9;
  713.     double Fpr10;
  714.     double Fpr11;
  715.     double Fpr12;
  716.     double Fpr13;
  717.     double Fpr14;
  718.     double Fpr15;
  719.     double Fpr16;
  720.     double Fpr17;
  721.     double Fpr18;
  722.     double Fpr19;
  723.     double Fpr20;
  724.     double Fpr21;
  725.     double Fpr22;
  726.     double Fpr23;
  727.     double Fpr24;
  728.     double Fpr25;
  729.     double Fpr26;
  730.     double Fpr27;
  731.     double Fpr28;
  732.     double Fpr29;
  733.     double Fpr30;
  734.     double Fpr31;
  735.     double Fpscr;
  736.  
  737.     /* Integer registers returned when CONTEXT_INTEGER is set.  */
  738.     DWORD Gpr0;
  739.     DWORD Gpr1;
  740.     DWORD Gpr2;
  741.     DWORD Gpr3;
  742.     DWORD Gpr4;
  743.     DWORD Gpr5;
  744.     DWORD Gpr6;
  745.     DWORD Gpr7;
  746.     DWORD Gpr8;
  747.     DWORD Gpr9;
  748.     DWORD Gpr10;
  749.     DWORD Gpr11;
  750.     DWORD Gpr12;
  751.     DWORD Gpr13;
  752.     DWORD Gpr14;
  753.     DWORD Gpr15;
  754.     DWORD Gpr16;
  755.     DWORD Gpr17;
  756.     DWORD Gpr18;
  757.     DWORD Gpr19;
  758.     DWORD Gpr20;
  759.     DWORD Gpr21;
  760.     DWORD Gpr22;
  761.     DWORD Gpr23;
  762.     DWORD Gpr24;
  763.     DWORD Gpr25;
  764.     DWORD Gpr26;
  765.     DWORD Gpr27;
  766.     DWORD Gpr28;
  767.     DWORD Gpr29;
  768.     DWORD Gpr30;
  769.     DWORD Gpr31;
  770.  
  771.     DWORD Cr;            /* Condition register */
  772.     DWORD Xer;            /* Fixed point exception register */
  773.  
  774.     /* The following are set when CONTEXT_CONTROL is set.  */
  775.     DWORD Msr;            /* Machine status register */
  776.     DWORD Iar;            /* Instruction address register */
  777.     DWORD Lr;            /* Link register */
  778.     DWORD Ctr;            /* Control register */
  779.  
  780.     /* Control which context values are returned */
  781.     DWORD ContextFlags;
  782.     DWORD Fill[3];
  783.  
  784.     /* Registers returned if CONTEXT_DEBUG_REGISTERS is set.  */
  785.     DWORD Dr0;                          /* Breakpoint Register 1 */
  786.     DWORD Dr1;                          /* Breakpoint Register 2 */
  787.     DWORD Dr2;                          /* Breakpoint Register 3 */
  788.     DWORD Dr3;                          /* Breakpoint Register 4 */
  789.     DWORD Dr4;                          /* Breakpoint Register 5 */
  790.     DWORD Dr5;                          /* Breakpoint Register 6 */
  791.     DWORD Dr6;                          /* Debug Status Register */
  792.     DWORD Dr7;                          /* Debug Control Register */
  793. } CONTEXT, *PCONTEXT, *LPCONTEXT;
  794. #endif
  795.  
  796. typedef struct _LIST_ENTRY { 
  797.   struct _LIST_ENTRY *Flink; 
  798.   struct _LIST_ENTRY *Blink; 
  799. } LIST_ENTRY, *PLIST_ENTRY; 
  800.  
  801. typedef struct _CRITICAL_SECTION_DEBUG {
  802.     WORD   Type;
  803.     WORD   CreatorBackTraceIndex;
  804.     struct _CRITICAL_SECTION *CriticalSection;
  805.     LIST_ENTRY ProcessLocksList;
  806.     DWORD EntryCount;
  807.     DWORD ContentionCount;
  808.     DWORD Depth;
  809.     PVOID OwnerBackTrace[ 5 ];
  810. } CRITICAL_SECTION_DEBUG, *PCRITICAL_SECTION_DEBUG;
  811.  
  812. typedef struct _CRITICAL_SECTION {
  813.     PCRITICAL_SECTION_DEBUG DebugInfo;
  814.     LONG LockCount;
  815.     LONG RecursionCount;
  816.     HANDLE OwningThread;
  817.     HANDLE LockSemaphore;
  818.     DWORD Reserved;
  819. } CRITICAL_SECTION, *PCRITICAL_SECTION, *LPCRITICAL_SECTION;
  820.  
  821. typedef struct _SECURITY_QUALITY_OF_SERVICE { 
  822.   DWORD Length; 
  823.   SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 
  824.   /* SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; */
  825.   WINBOOL ContextTrackingMode; 
  826.   BOOLEAN EffectiveOnly; 
  827. } SECURITY_QUALITY_OF_SERVICE; 
  828.  
  829. typedef struct tagCONVCONTEXT { 
  830.   UINT  cb; 
  831.   UINT  wFlags; 
  832.   UINT  wCountryID; 
  833.   int   iCodePage; 
  834.   DWORD dwLangID; 
  835.   DWORD dwSecurity; 
  836.   SECURITY_QUALITY_OF_SERVICE qos;
  837. } CONVCONTEXT; 
  838.  
  839. typedef CONVCONTEXT *PCONVCONTEXT;
  840.  
  841. typedef struct tagCONVINFO { 
  842.   DWORD       cb; 
  843.   DWORD       hUser; 
  844.   HCONV       hConvPartner; 
  845.   HSZ         hszSvcPartner; 
  846.   HSZ         hszServiceReq; 
  847.   HSZ         hszTopic; 
  848.   HSZ         hszItem; 
  849.   UINT        wFmt; 
  850.   UINT        wType; 
  851.   UINT        wStatus; 
  852.   UINT        wConvst; 
  853.   UINT        wLastError; 
  854.   HCONVLIST   hConvList; 
  855.   CONVCONTEXT ConvCtxt; 
  856.   HWND        hwnd; 
  857.   HWND        hwndPartner; 
  858. } CONVINFO; 
  859.  
  860. typedef struct tagCOPYDATASTRUCT { 
  861.   DWORD dwData; 
  862.   DWORD cbData; 
  863.   PVOID lpData; 
  864. } COPYDATASTRUCT; 
  865.  
  866. typedef struct _cpinfo { 
  867.   UINT MaxCharSize; 
  868.   BYTE DefaultChar[MAX_DEFAULTCHAR]; 
  869.   BYTE LeadByte[MAX_LEADBYTES]; 
  870. } CPINFO, *LPCPINFO; 
  871.  
  872. typedef struct tagCPLINFO { 
  873.   int  idIcon; 
  874.   int  idName; 
  875.   int  idInfo; 
  876.   LONG lData; 
  877. } CPLINFO; 
  878.  
  879. typedef struct _CREATE_PROCESS_DEBUG_INFO {
  880.   HANDLE hFile; 
  881.   HANDLE hProcess; 
  882.   HANDLE hThread; 
  883.   LPVOID lpBaseOfImage; 
  884.   DWORD dwDebugInfoFileOffset; 
  885.   DWORD nDebugInfoSize; 
  886.   LPVOID lpThreadLocalBase; 
  887.   LPTHREAD_START_ROUTINE lpStartAddress; 
  888.   LPVOID lpImageName; 
  889.   WORD fUnicode; 
  890. } CREATE_PROCESS_DEBUG_INFO; 
  891.  
  892. typedef struct _CREATE_THREAD_DEBUG_INFO {
  893.   HANDLE hThread; 
  894.   LPVOID lpThreadLocalBase; 
  895.   LPTHREAD_START_ROUTINE lpStartAddress; 
  896. } CREATE_THREAD_DEBUG_INFO; 
  897.  
  898. /*
  899.  TODO: sockets
  900. typedef struct _SOCKET_ADDRESS {
  901.   LPSOCKADDR lpSockaddr ;
  902.   INT iSockaddrLength ;
  903. } SOCKET_ADDRESS, *PSOCKET_ADDRESS, *LPSOCKET_ADDRESS;
  904. */
  905.  
  906. /*
  907. typedef struct _CSADDR_INFO { 
  908.   SOCKET_ADDRESS  LocalAddr; 
  909.   SOCKET_ADDRESS  RemoteAddr; 
  910.   INT             iSocketType; 
  911.   INT             iProtocol; 
  912. } CSADDR_INFO; 
  913. */
  914.  
  915. typedef struct _currencyfmt { 
  916.   UINT      NumDigits; 
  917.   UINT      LeadingZero; 
  918.   UINT      Grouping; 
  919.   LPTSTR    lpDecimalSep; 
  920.   LPTSTR    lpThousandSep; 
  921.   UINT      NegativeOrder; 
  922.   UINT      PositiveOrder; 
  923.   LPTSTR    lpCurrencySymbol;
  924. } CURRENCYFMT; 
  925.  
  926. typedef struct tagCURSORSHAPE {  
  927.   int     xHotSpot; 
  928.   int     yHotSpot; 
  929.   int     cx; 
  930.   int     cy; 
  931.   int     cbWidth; 
  932.   BYTE    Planes; 
  933.   BYTE    BitsPixel; 
  934. } CURSORSHAPE,   *LPCURSORSHAPE; 
  935.  
  936. typedef struct tagCWPRETSTRUCT {
  937.   LRESULT lResult; 
  938.   LPARAM  lParam; 
  939.   WPARAM  wParam; 
  940.   DWORD   message; 
  941.   HWND    hwnd; 
  942. } CWPRETSTRUCT; 
  943.  
  944. typedef struct tagCWPSTRUCT {
  945.   LPARAM  lParam; 
  946.   WPARAM  wParam; 
  947.   UINT    message; 
  948.   HWND    hwnd; 
  949. } CWPSTRUCT; 
  950.  
  951. typedef struct _DATATYPES_INFO_1 { 
  952.   LPTSTR pName; 
  953. } DATATYPES_INFO_1; 
  954.  
  955. typedef struct { 
  956.   unsigned short bAppReturnCode:8, 
  957.     reserved:6, 
  958.     fBusy:1, 
  959.     fAck:1; 
  960. } DDEACK; 
  961.  
  962. typedef struct { 
  963.   unsigned short reserved:14, 
  964.     fDeferUpd:1, 
  965.     fAckReq:1; 
  966.   short cfFormat; 
  967. } DDEADVISE; 
  968.  
  969. typedef struct { 
  970.   unsigned short unused:12, 
  971.     fResponse:1, 
  972.     fRelease:1, 
  973.     reserved:1, 
  974.     fAckReq:1; 
  975.   short cfFormat; 
  976.   BYTE  Value[1]; 
  977. } DDEDATA; 
  978.  
  979. typedef struct { 
  980.   unsigned short unused:13, 
  981.     fRelease:1, 
  982.     fDeferUpd:1, 
  983.     fAckReq:1; 
  984.   short cfFormat; 
  985. } DDELN; 
  986.  
  987. typedef struct tagDDEML_MSG_HOOK_DATA { 
  988.   UINT  uiLo; 
  989.   UINT  uiHi; 
  990.   DWORD cbData; 
  991.   DWORD Data[8]; 
  992. } DDEML_MSG_HOOK_DATA; 
  993.  
  994. typedef struct { 
  995.   unsigned short unused:13, 
  996.     fRelease:1, 
  997.     fReserved:2; 
  998.   short cfFormat; 
  999.   BYTE  Value[1]; 
  1000. } DDEPOKE; 
  1001.  
  1002. typedef struct { 
  1003.   unsigned short unused:12, 
  1004.     fAck:1, 
  1005.     fRelease:1, 
  1006.     fReserved:1, 
  1007.     fAckReq:1; 
  1008.   short cfFormat; 
  1009.   BYTE rgb[1]; 
  1010. } DDEUP; 
  1011.  
  1012. typedef struct _EXCEPTION_RECORD { 
  1013.   DWORD ExceptionCode; 
  1014.   DWORD ExceptionFlags; 
  1015.   struct _EXCEPTION_RECORD *ExceptionRecord; 
  1016.   PVOID ExceptionAddress; 
  1017.   DWORD NumberParameters; 
  1018.   DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; 
  1019. } EXCEPTION_RECORD, *PEXCEPTION_RECORD, *LPEXCEPTION_RECORD; 
  1020.  
  1021. typedef struct _EXCEPTION_DEBUG_INFO {
  1022.   EXCEPTION_RECORD ExceptionRecord; 
  1023.   DWORD dwFirstChance; 
  1024. } EXCEPTION_DEBUG_INFO; 
  1025.  
  1026. typedef struct _EXIT_PROCESS_DEBUG_INFO { 
  1027.   DWORD dwExitCode; 
  1028. } EXIT_PROCESS_DEBUG_INFO; 
  1029.  
  1030. typedef struct _EXIT_THREAD_DEBUG_INFO { 
  1031.   DWORD dwExitCode; 
  1032. } EXIT_THREAD_DEBUG_INFO; 
  1033.  
  1034. typedef struct _LOAD_DLL_DEBUG_INFO { 
  1035.   HANDLE hFile; 
  1036.   LPVOID lpBaseOfDll; 
  1037.   DWORD  dwDebugInfoFileOffset; 
  1038.   DWORD  nDebugInfoSize; 
  1039.   LPVOID lpImageName; 
  1040.   WORD fUnicode; 
  1041. } LOAD_DLL_DEBUG_INFO; 
  1042.  
  1043. typedef struct _UNLOAD_DLL_DEBUG_INFO { 
  1044.   LPVOID lpBaseOfDll; 
  1045. } UNLOAD_DLL_DEBUG_INFO; 
  1046.  
  1047. typedef struct _OUTPUT_DEBUG_STRING_INFO { 
  1048.   LPSTR lpDebugStringData; 
  1049.   WORD  fUnicode; 
  1050.   WORD  nDebugStringLength; 
  1051. } OUTPUT_DEBUG_STRING_INFO; 
  1052.  
  1053. typedef struct _RIP_INFO { 
  1054.   DWORD  dwError; 
  1055.   DWORD  dwType; 
  1056. } RIP_INFO; 
  1057.  
  1058. typedef struct _DEBUG_EVENT { 
  1059.   DWORD dwDebugEventCode; 
  1060.   DWORD dwProcessId; 
  1061.   DWORD dwThreadId; 
  1062.   union { 
  1063.     EXCEPTION_DEBUG_INFO Exception; 
  1064.     CREATE_THREAD_DEBUG_INFO CreateThread; 
  1065.     CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; 
  1066.     EXIT_THREAD_DEBUG_INFO ExitThread; 
  1067.     EXIT_PROCESS_DEBUG_INFO ExitProcess; 
  1068.     LOAD_DLL_DEBUG_INFO LoadDll; 
  1069.     UNLOAD_DLL_DEBUG_INFO UnloadDll; 
  1070.     OUTPUT_DEBUG_STRING_INFO DebugString; 
  1071.     RIP_INFO RipInfo; 
  1072.   } u; 
  1073. } DEBUG_EVENT, *LPDEBUG_EVENT; 
  1074.  
  1075. typedef struct tagDEBUGHOOKINFO {
  1076.   DWORD  idThread; 
  1077.   DWORD  idThreadInstaller; 
  1078.   LPARAM lParam; 
  1079.   WPARAM wParam; 
  1080.   int    code; 
  1081. } DEBUGHOOKINFO; 
  1082.  
  1083. typedef struct tagDELETEITEMSTRUCT { 
  1084.   UINT CtlType; 
  1085.   UINT CtlID; 
  1086.   UINT itemID; 
  1087.   HWND hwndItem; 
  1088.   UINT itemData; 
  1089. } DELETEITEMSTRUCT; 
  1090.  
  1091. typedef struct _DEV_BROADCAST_HDR {
  1092.   ULONG dbch_size; 
  1093.   ULONG dbch_devicetype; 
  1094.   ULONG dbch_reserved; 
  1095. } DEV_BROADCAST_HDR;
  1096. typedef DEV_BROADCAST_HDR *PDEV_BROADCAST_HDR;
  1097.  
  1098. typedef struct _DEV_BROADCAST_OEM {
  1099.   ULONG dbco_size; 
  1100.   ULONG dbco_devicetype; 
  1101.   ULONG dbco_reserved; 
  1102.   ULONG dbco_identifier; 
  1103.   ULONG dbco_suppfunc; 
  1104. } DEV_BROADCAST_OEM;
  1105. typedef DEV_BROADCAST_OEM *PDEV_BROADCAST_OEM;
  1106.  
  1107. typedef struct _DEV_BROADCAST_PORT {
  1108.   ULONG dbcp_size; 
  1109.   ULONG dbcp_devicetype; 
  1110.   ULONG dbcp_reserved; 
  1111.   char dbcp_name[1]; 
  1112. } DEV_BROADCAST_PORT;
  1113. typedef DEV_BROADCAST_PORT *PDEV_BROADCAST_PORT;
  1114.  
  1115. struct _DEV_BROADCAST_USERDEFINED { 
  1116.   struct _DEV_BROADCAST_HDR dbud_dbh; 
  1117.   char  dbud_szName[1];
  1118.   BYTE  dbud_rgbUserDefined[1];
  1119. }; 
  1120.  
  1121. typedef struct _DEV_BROADCAST_VOLUME {
  1122.   ULONG dbcv_size; 
  1123.   ULONG dbcv_devicetype; 
  1124.   ULONG dbcv_reserved; 
  1125.   ULONG dbcv_unitmask; 
  1126.   USHORT dbcv_flags; 
  1127. } DEV_BROADCAST_VOLUME;
  1128. typedef DEV_BROADCAST_VOLUME *PDEV_BROADCAST_VOLUME;
  1129.  
  1130. typedef struct _devicemode {  
  1131.   BCHAR  dmDeviceName[CCHDEVICENAME]; 
  1132.   WORD   dmSpecVersion; 
  1133.   WORD   dmDriverVersion; 
  1134.   WORD   dmSize; 
  1135.   WORD   dmDriverExtra; 
  1136.   DWORD  dmFields; 
  1137.   short  dmOrientation; 
  1138.   short  dmPaperSize; 
  1139.   short  dmPaperLength; 
  1140.   short  dmPaperWidth; 
  1141.   short  dmScale; 
  1142.   short  dmCopies; 
  1143.   short  dmDefaultSource; 
  1144.   short  dmPrintQuality; 
  1145.   short  dmColor; 
  1146.   short  dmDuplex; 
  1147.   short  dmYResolution; 
  1148.   short  dmTTOption; 
  1149.   short  dmCollate; 
  1150.   BCHAR  dmFormName[CCHFORMNAME]; 
  1151.   WORD  dmLogPixels; 
  1152.   DWORD  dmBitsPerPel; 
  1153.   DWORD  dmPelsWidth; 
  1154.   DWORD  dmPelsHeight; 
  1155.   DWORD  dmDisplayFlags; 
  1156.   DWORD  dmDisplayFrequency; 
  1157.   DWORD  dmICMMethod;         
  1158.   DWORD  dmICMIntent;         
  1159.   DWORD  dmMediaType;         
  1160.   DWORD  dmDitherType;        
  1161.   DWORD  dmICCManufacturer;   
  1162.   DWORD  dmICCModel;          
  1163. } DEVMODE, *LPDEVMODE; 
  1164.  
  1165. typedef struct tagDEVNAMES { 
  1166.   WORD wDriverOffset; 
  1167.   WORD wDeviceOffset; 
  1168.   WORD wOutputOffset; 
  1169.   WORD wDefault; 
  1170. } DEVNAMES, *LPDEVNAMES; 
  1171.  
  1172. typedef struct tagDIBSECTION { 
  1173.   BITMAP              dsBm; 
  1174.   BITMAPINFOHEADER    dsBmih; 
  1175.   DWORD               dsBitfields[3]; 
  1176.   HANDLE              dshSection; 
  1177.   DWORD               dsOffset; 
  1178. } DIBSECTION; 
  1179.  
  1180. typedef struct _LARGE_INTEGER { 
  1181.   DWORD LowPart; 
  1182.   LONG  HighPart; 
  1183. } LARGE_INTEGER, *PLARGE_INTEGER; 
  1184.  
  1185. typedef struct _DISK_GEOMETRY { 
  1186.   LARGE_INTEGER  Cylinders; 
  1187.   MEDIA_TYPE  MediaType; 
  1188.   DWORD  TracksPerCylinder; 
  1189.   DWORD  SectorsPerTrack; 
  1190.   DWORD  BytesPerSector; 
  1191. } DISK_GEOMETRY ; 
  1192.  
  1193. typedef struct _DISK_PERFORMANCE { 
  1194.   LARGE_INTEGER BytesRead; 
  1195.   LARGE_INTEGER BytesWritten; 
  1196.   LARGE_INTEGER ReadTime; 
  1197.   LARGE_INTEGER WriteTime; 
  1198.   DWORD ReadCount; 
  1199.   DWORD WriteCount; 
  1200.   DWORD QueueDepth; 
  1201. } DISK_PERFORMANCE ; 
  1202.  
  1203. typedef struct { 
  1204.   DWORD style; 
  1205.   DWORD dwExtendedStyle; 
  1206.   short x; 
  1207.   short y; 
  1208.   short cx; 
  1209.   short cy; 
  1210.   WORD  id; 
  1211. } PACKED DLGITEMTEMPLATE; 
  1212.  
  1213. typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATE;
  1214. typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATE;
  1215.  
  1216. typedef struct { 
  1217.   DWORD style; 
  1218.   DWORD dwExtendedStyle; 
  1219.   WORD  cdit; 
  1220.   short x; 
  1221.   short y; 
  1222.   short cx; 
  1223.   short cy; 
  1224. } PACKED DLGTEMPLATE;
  1225.  
  1226. typedef DLGTEMPLATE *LPDLGTEMPLATE; 
  1227. typedef const DLGTEMPLATE *LPCDLGTEMPLATE;
  1228.  
  1229. typedef struct _DOC_INFO_1 { 
  1230.   LPTSTR pDocName; 
  1231.   LPTSTR pOutputFile; 
  1232.   LPTSTR pDatatype; 
  1233. } DOC_INFO_1; 
  1234.  
  1235. typedef struct _DOC_INFO_2 { 
  1236.   LPTSTR pDocName; 
  1237.   LPTSTR pOutputFile; 
  1238.   LPTSTR pDatatype; 
  1239.   DWORD  dwMode; 
  1240.   DWORD  JobId; 
  1241. } DOC_INFO_2; 
  1242.  
  1243. typedef struct {    
  1244.   int     cbSize; 
  1245.   LPCTSTR lpszDocName; 
  1246.   LPCTSTR lpszOutput; 
  1247.   LPCTSTR lpszDatatype; 
  1248.   DWORD   fwType;       
  1249. } DOCINFO; 
  1250.  
  1251. typedef struct { 
  1252.   UINT uNotification; 
  1253.   HWND hWnd; 
  1254.   POINT ptCursor; 
  1255. } DRAGLISTINFO, *LPDRAGLISTINFO; 
  1256.  
  1257. typedef struct tagDRAWITEMSTRUCT { 
  1258.   UINT  CtlType; 
  1259.   UINT  CtlID; 
  1260.   UINT  itemID; 
  1261.   UINT  itemAction; 
  1262.   UINT  itemState; 
  1263.   HWND  hwndItem; 
  1264.   HDC   hDC; 
  1265.   RECT  rcItem; 
  1266.   DWORD itemData; 
  1267. } DRAWITEMSTRUCT, *LPDRAWITEMSTRUCT, *PDRAWITEMSTRUCT; 
  1268.  
  1269. typedef struct { 
  1270.   UINT cbSize;         
  1271.   int  iTabLength;     
  1272.   int  iLeftMargin;    
  1273.   int  iRightMargin;   
  1274.   UINT uiLengthDrawn;  
  1275. } DRAWTEXTPARAMS, *LPDRAWTEXTPARAMS; 
  1276.  
  1277. typedef struct _PARTITION_INFORMATION { 
  1278.   BYTE PartitionType; 
  1279.   BOOLEAN BootIndicator; 
  1280.   BOOLEAN RecognizedPartition; 
  1281.   BOOLEAN RewritePartition; 
  1282.   LARGE_INTEGER StartingOffset; 
  1283.   LARGE_INTEGER PartitionLength; 
  1284.   LARGE_INTEGER HiddenSectors; 
  1285. } PARTITION_INFORMATION ; 
  1286.  
  1287. typedef struct _DRIVE_LAYOUT_INFORMATION { 
  1288.   DWORD  PartitionCount; 
  1289.   DWORD  Signature; 
  1290.   PARTITION_INFORMATION  PartitionEntry[1]; 
  1291. } DRIVE_LAYOUT_INFORMATION; 
  1292.  
  1293. typedef struct _DRIVER_INFO_1 { 
  1294.   LPTSTR pName; 
  1295. } DRIVER_INFO_1; 
  1296.  
  1297. typedef struct _DRIVER_INFO_2 { 
  1298.   DWORD  cVersion; 
  1299.   LPTSTR pName; 
  1300.   LPTSTR pEnvironment; 
  1301.   LPTSTR pDriverPath; 
  1302.   LPTSTR pDataFile; 
  1303.   LPTSTR pConfigFile; 
  1304. } DRIVER_INFO_2; 
  1305.  
  1306. typedef struct _DRIVER_INFO_3 { 
  1307.   DWORD  cVersion; 
  1308.   LPTSTR pName; 
  1309.   LPTSTR pEnvironment; 
  1310.   LPTSTR pDriverPath; 
  1311.   LPTSTR pDataFile; 
  1312.   LPTSTR pConfigFile; 
  1313.   LPTSTR pHelpFile; 
  1314.   LPTSTR pDependentFiles; 
  1315.   LPTSTR pMonitorName; 
  1316.   LPTSTR pDefaultDataType; 
  1317. } DRIVER_INFO_3; 
  1318.  
  1319. typedef struct _editstream { 
  1320.   DWORD dwCookie; 
  1321.   DWORD dwError; 
  1322.   EDITSTREAMCALLBACK pfnCallback; 
  1323. } EDITSTREAM; 
  1324.  
  1325. typedef struct tagEMR
  1326. {
  1327.   DWORD iType; 
  1328.   DWORD nSize;
  1329. } EMR, *PEMR; 
  1330.  
  1331. typedef struct tagEMRANGLEARC
  1332. {
  1333.   EMR     emr;
  1334.   POINTL  ptlCenter; 
  1335.   DWORD   nRadius;
  1336.   FLOAT   eStartAngle;
  1337.   FLOAT   eSweepAngle;
  1338. } EMRANGLEARC, *PEMRANGLEARC; 
  1339.  
  1340. typedef struct tagEMRARC
  1341. {
  1342.   EMR    emr; 
  1343.   RECTL  rclBox;
  1344.   POINTL ptlStart;
  1345.   POINTL ptlEnd;
  1346. } EMRARC,   *PEMRARC,
  1347.     EMRARCTO, *PEMRARCTO,
  1348.     EMRCHORD, *PEMRCHORD,
  1349.     EMRPIE,   *PEMRPIE; 
  1350.  
  1351. typedef struct  _XFORM
  1352. {
  1353.   FLOAT   eM11;
  1354.   FLOAT   eM12;
  1355.   FLOAT   eM21;
  1356.   FLOAT   eM22;
  1357.   FLOAT   eDx;
  1358.   FLOAT   eDy;
  1359. } XFORM, *PXFORM, *LPXFORM;
  1360.  
  1361. typedef struct tagEMRBITBLT
  1362. {
  1363.   EMR      emr; 
  1364.   RECTL    rclBounds; 
  1365.   LONG     xDest; 
  1366.   LONG     yDest; 
  1367.   LONG     cxDest; 
  1368.   LONG     cyDest; 
  1369.   DWORD    dwRop; 
  1370.   LONG     xSrc; 
  1371.   LONG     ySrc; 
  1372.   XFORM    xformSrc; 
  1373.   COLORREF crBkColorSrc; 
  1374.   DWORD    iUsageSrc; 
  1375.   DWORD    offBmiSrc; 
  1376.   DWORD    offBitsSrc; 
  1377.   DWORD    cbBitsSrc; 
  1378. } EMRBITBLT, *PEMRBITBLT; 
  1379.  
  1380. typedef struct tagLOGBRUSH { 
  1381.   UINT     lbStyle; 
  1382.   COLORREF lbColor; 
  1383.   LONG     lbHatch; 
  1384. } LOGBRUSH; 
  1385.  
  1386. typedef struct tagEMRCREATEBRUSHINDIRECT
  1387. {
  1388.   EMR      emr; 
  1389.   DWORD    ihBrush; 
  1390.   LOGBRUSH lb; 
  1391. } EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT; 
  1392.  
  1393. typedef LONG LCSCSTYPE;
  1394. typedef LONG LCSGAMUTMATCH;
  1395.  
  1396. typedef struct tagLOGCOLORSPACE {
  1397.   DWORD         lcsSignature; 
  1398.   DWORD         lcsVersion; 
  1399.   DWORD         lcsSize; 
  1400.  
  1401.   LCSCSTYPE     lcsCSType; 
  1402.   LCSGAMUTMATCH lcsIntent; 
  1403.   CIEXYZTRIPLE  lcsEndpoints;
  1404.   DWORD         lcsGammaRed;
  1405.   DWORD         lcsGammaGreen; 
  1406.   DWORD         lcsGammaBlue;
  1407.   TCHAR         lcsFilename[MAX_PATH]; 
  1408. } LOGCOLORSPACE, *LPLOGCOLORSPACE; 
  1409.  
  1410. typedef struct tagEMRCREATECOLORSPACE
  1411. {
  1412.   EMR           emr; 
  1413.   DWORD         ihCS; 
  1414.   LOGCOLORSPACE lcs; 
  1415. } EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE; 
  1416.  
  1417. typedef struct tagEMRCREATEDIBPATTERNBRUSHPT
  1418. {
  1419.   EMR   emr; 
  1420.   DWORD ihBrush; 
  1421.   DWORD iUsage; 
  1422.   DWORD offBmi; 
  1423.   DWORD cbBmi; 
  1424.   DWORD offBits; 
  1425.   DWORD cbBits; 
  1426. } EMRCREATEDIBPATTERNBRUSHPT, 
  1427.     PEMRCREATEDIBPATTERNBRUSHPT; 
  1428.  
  1429. typedef struct tagEMRCREATEMONOBRUSH
  1430. {
  1431.   EMR   emr; 
  1432.   DWORD ihBrush; 
  1433.   DWORD iUsage; 
  1434.   DWORD offBmi; 
  1435.   DWORD cbBmi; 
  1436.   DWORD offBits; 
  1437.   DWORD cbBits; 
  1438. } EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH; 
  1439.  
  1440. typedef struct tagPALETTEENTRY { 
  1441.   BYTE peRed; 
  1442.   BYTE peGreen; 
  1443.   BYTE peBlue; 
  1444.   BYTE peFlags; 
  1445. } PALETTEENTRY, *LPPALETTEENTRY, *PPALETTEENTRY; 
  1446.  
  1447. typedef struct tagLOGPALETTE { 
  1448.   WORD         palVersion; 
  1449.   WORD         palNumEntries; 
  1450.   PALETTEENTRY palPalEntry[1]; 
  1451. } LOGPALETTE, *LPLOGPALETTE, *PLOGPALETTE; 
  1452.  
  1453. typedef struct tagEMRCREATEPALETTE
  1454. {
  1455.   EMR        emr; 
  1456.   DWORD      ihPal; 
  1457.   LOGPALETTE lgpl; 
  1458. } EMRCREATEPALETTE, *PEMRCREATEPALETTE; 
  1459.  
  1460. typedef struct tagLOGPEN { 
  1461.   UINT     lopnStyle; 
  1462.   POINT    lopnWidth; 
  1463.   COLORREF lopnColor; 
  1464. } LOGPEN; 
  1465.  
  1466. typedef struct tagEMRCREATEPEN
  1467. {
  1468.   EMR    emr; 
  1469.   DWORD  ihPen; 
  1470.   LOGPEN lopn; 
  1471. } EMRCREATEPEN, *PEMRCREATEPEN; 
  1472.  
  1473. typedef struct tagEMRELLIPSE
  1474. {
  1475.   EMR   emr; 
  1476.   RECTL rclBox; 
  1477. } EMRELLIPSE,  *PEMRELLIPSE,
  1478.     EMRRECTANGLE, *PEMRRECTANGLE; 
  1479.  
  1480. typedef struct tagEMREOF
  1481. {
  1482.   EMR     emr;
  1483.   DWORD   nPalEntries; 
  1484.   DWORD   offPalEntries; 
  1485.   DWORD   nSizeLast; 
  1486. } EMREOF, *PEMREOF; 
  1487.  
  1488. typedef struct tagEMREXCLUDECLIPRECT
  1489. {
  1490.   EMR   emr;      
  1491.   RECTL rclClip;  
  1492. } EMREXCLUDECLIPRECT,   *PEMREXCLUDECLIPRECT,
  1493.     EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT; 
  1494.  
  1495. typedef struct tagPANOSE { 
  1496.   BYTE bFamilyType; 
  1497.   BYTE bSerifStyle; 
  1498.   BYTE bWeight; 
  1499.   BYTE bProportion; 
  1500.   BYTE bContrast; 
  1501.   BYTE bStrokeVariation; 
  1502.   BYTE bArmStyle; 
  1503.   BYTE bLetterform; 
  1504.   BYTE bMidline; 
  1505.   BYTE bXHeight; 
  1506. } PANOSE; 
  1507.  
  1508. typedef struct tagEXTLOGFONT { 
  1509.     LOGFONT elfLogFont; 
  1510.     BCHAR    elfFullName[LF_FULLFACESIZE]; 
  1511.     BCHAR    elfStyle[LF_FACESIZE]; 
  1512.     DWORD   elfVersion; 
  1513.     DWORD   elfStyleSize; 
  1514.     DWORD   elfMatch; 
  1515.     DWORD   elfReserved; 
  1516.     BYTE    elfVendorId[ELF_VENDOR_SIZE]; 
  1517.     DWORD   elfCulture; 
  1518.     PANOSE  elfPanose; 
  1519. } EXTLOGFONT; 
  1520.  
  1521. typedef struct tagEMREXTCREATEFONTINDIRECTW
  1522. {
  1523.   EMR         emr; 
  1524.   DWORD       ihFont; 
  1525.   EXTLOGFONT  elfw; 
  1526. } EMREXTCREATEFONTINDIRECTW, 
  1527.     PEMREXTCREATEFONTINDIRECTW; 
  1528.  
  1529. typedef struct tagEXTLOGPEN { 
  1530.   UINT     elpPenStyle; 
  1531.   UINT     elpWidth; 
  1532.   UINT     elpBrushStyle; 
  1533.   COLORREF elpColor; 
  1534.   LONG     elpHatch; 
  1535.   DWORD    elpNumEntries; 
  1536.   DWORD    elpStyleEntry[1]; 
  1537. } EXTLOGPEN; 
  1538.  
  1539. typedef struct tagEMREXTCREATEPEN
  1540. {
  1541.   EMR       emr; 
  1542.   DWORD     ihPen; 
  1543.   DWORD     offBmi; 
  1544.   DWORD     cbBmi; 
  1545.   DWORD     offBits; 
  1546.   DWORD     cbBits; 
  1547.   EXTLOGPEN elp; 
  1548. } EMREXTCREATEPEN, *PEMREXTCREATEPEN; 
  1549.  
  1550. typedef struct tagEMREXTFLOODFILL
  1551. {
  1552.   EMR     emr; 
  1553.   POINTL  ptlStart; 
  1554.   COLORREF crColor; 
  1555.   DWORD   iMode; 
  1556. } EMREXTFLOODFILL, *PEMREXTFLOODFILL; 
  1557.  
  1558. typedef struct tagEMREXTSELECTCLIPRGN
  1559. {
  1560.   EMR   emr; 
  1561.   DWORD cbRgnData; 
  1562.   DWORD iMode; 
  1563.   BYTE  RgnData[1]; 
  1564. } EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN; 
  1565.  
  1566. typedef struct tagEMRTEXT 
  1567. {
  1568.   POINTL ptlReference; 
  1569.   DWORD  nChars; 
  1570.   DWORD  offString; 
  1571.   DWORD  fOptions; 
  1572.   RECTL  rcl; 
  1573.   DWORD  offDx; 
  1574. } EMRTEXT, *PEMRTEXT; 
  1575.  
  1576. typedef struct tagEMREXTTEXTOUTA
  1577. {
  1578.   EMR     emr; 
  1579.   RECTL   rclBounds; 
  1580.   DWORD   iGraphicsMode; 
  1581.   FLOAT   exScale; 
  1582.   FLOAT   eyScale;
  1583.   EMRTEXT emrtext; 
  1584. } EMREXTTEXTOUTA, *PEMREXTTEXTOUTA,
  1585.     EMREXTTEXTOUTW, *PEMREXTTEXTOUTW; 
  1586.  
  1587. typedef struct tagEMRFILLPATH
  1588. {
  1589.   EMR   emr; 
  1590.   RECTL rclBounds; 
  1591. } EMRFILLPATH,          *PEMRFILLPATH,
  1592.     EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH,
  1593.     EMRSTROKEPATH,        *PEMRSTROKEPATH; 
  1594.  
  1595. typedef struct tagEMRFILLRGN
  1596. {
  1597.   EMR   emr; 
  1598.   RECTL rclBounds; 
  1599.   DWORD cbRgnData; 
  1600.   DWORD ihBrush; 
  1601.   BYTE  RgnData[1]; 
  1602. } EMRFILLRGN, *PEMRFILLRGN; 
  1603.  
  1604. typedef struct tagEMRFORMAT { 
  1605.   DWORD   dSignature; 
  1606.   DWORD   nVersion; 
  1607.   DWORD   cbData; 
  1608.   DWORD   offData; 
  1609. } EMRFORMAT; 
  1610.  
  1611. typedef struct tagSIZE { 
  1612.   LONG cx; 
  1613.   LONG cy; 
  1614. } SIZE, *PSIZE, *LPSIZE, SIZEL, *PSIZEL, *LPSIZEL; 
  1615.  
  1616. typedef struct tagEMRFRAMERGN
  1617. {
  1618.   EMR   emr; 
  1619.   RECTL rclBounds; 
  1620.   DWORD cbRgnData; 
  1621.   DWORD ihBrush; 
  1622.   SIZEL szlStroke; 
  1623.   BYTE  RgnData[1]; 
  1624. } EMRFRAMERGN, *PEMRFRAMERGN; 
  1625.  
  1626. typedef struct tagEMRGDICOMMENT
  1627. {
  1628.   EMR   emr; 
  1629.   DWORD cbData; 
  1630.   BYTE  Data[1]; 
  1631. } EMRGDICOMMENT, *PEMRGDICOMMENT; 
  1632.  
  1633. typedef struct tagEMRINVERTRGN
  1634. {
  1635.   EMR   emr; 
  1636.   RECTL rclBounds; 
  1637.   DWORD cbRgnData; 
  1638.   BYTE  RgnData[1]; 
  1639. } EMRINVERTRGN, *PEMRINVERTRGN,
  1640.     EMRPAINTRGN,  *PEMRPAINTRGN; 
  1641.  
  1642. typedef struct tagEMRLINETO
  1643. {
  1644.   EMR    emr; 
  1645.   POINTL ptl; 
  1646. } EMRLINETO,   *PEMRLINETO,
  1647.     EMRMOVETOEX, *PEMRMOVETOEX; 
  1648.  
  1649. typedef struct tagEMRMASKBLT
  1650. {
  1651.   EMR     emr; 
  1652.   RECTL   rclBounds; 
  1653.   LONG    xDest; 
  1654.   LONG    yDest; 
  1655.   LONG    cxDest; 
  1656.   LONG    cyDest; 
  1657.   DWORD   dwRop; 
  1658.   LONG    xSrc; 
  1659.   LONG    ySrc; 
  1660.   XFORM   xformSrc; 
  1661.   COLORREF crBkColorSrc; 
  1662.   DWORD   iUsageSrc; 
  1663.   DWORD   offBmiSrc; 
  1664.   DWORD   cbBmiSrc; 
  1665.   DWORD   offBitsSrc; 
  1666.   DWORD   cbBitsSrc; 
  1667.   LONG    xMask; 
  1668.   LONG    yMask; 
  1669.   DWORD   iUsageMask; 
  1670.   DWORD   offBmiMask; 
  1671.   DWORD   cbBmiMask; 
  1672.   DWORD   offBitsMask; 
  1673.   DWORD   cbBitsMask; 
  1674. } EMRMASKBLT, *PEMRMASKBLT; 
  1675.  
  1676. typedef struct tagEMRMODIFYWORLDTRANSFORM
  1677. {
  1678.   EMR   emr; 
  1679.   XFORM xform; 
  1680.   DWORD iMode; 
  1681. } EMRMODIFYWORLDTRANSFORM, 
  1682.     PEMRMODIFYWORLDTRANSFORM; 
  1683.  
  1684. typedef struct tagEMROFFSETCLIPRGN
  1685. {
  1686.   EMR    emr; 
  1687.   POINTL ptlOffset; 
  1688. } EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN; 
  1689.  
  1690. typedef struct tagEMRPLGBLT
  1691. {
  1692.   EMR      emr; 
  1693.   RECTL    rclBounds; 
  1694.   POINTL   aptlDest[3]; 
  1695.   LONG    xSrc; 
  1696.   LONG    ySrc; 
  1697.   LONG     cxSrc; 
  1698.   LONG     cySrc; 
  1699.   XFORM   xformSrc; 
  1700.   COLORREF crBkColorSrc; 
  1701.   DWORD    iUsageSrc; 
  1702.   DWORD    offBmiSrc; 
  1703.   DWORD   cbBmiSrc; 
  1704.   DWORD   offBitsSrc; 
  1705.   DWORD   cbBitsSrc; 
  1706.   LONG    xMask;
  1707.   LONG    yMask; 
  1708.   DWORD   iUsageMask; 
  1709.   DWORD   offBmiMask; 
  1710.   DWORD   cbBmiMask;
  1711.   DWORD   offBitsMask;
  1712.   DWORD   cbBitsMask;
  1713. } EMRPLGBLT, *PEMRPLGBLT; 
  1714.  
  1715. typedef struct tagEMRPOLYDRAW
  1716. {
  1717.   EMR    emr; 
  1718.   RECTL  rclBounds; 
  1719.   DWORD  cptl; 
  1720.   POINTL aptl[1]; 
  1721.   BYTE   abTypes[1]; 
  1722. } EMRPOLYDRAW, *PEMRPOLYDRAW; 
  1723.  
  1724. typedef struct tagEMRPOLYDRAW16
  1725. {
  1726.   EMR    emr; 
  1727.   RECTL  rclBounds; 
  1728.   DWORD  cpts; 
  1729.   POINTS apts[1]; 
  1730.   BYTE   abTypes[1]; 
  1731. } EMRPOLYDRAW16, *PEMRPOLYDRAW16; 
  1732.  
  1733. typedef struct tagEMRPOLYLINE
  1734. {
  1735.   EMR    emr;
  1736.   RECTL  rclBounds; 
  1737.   DWORD  cptl; 
  1738.   POINTL aptl[1]; 
  1739. } EMRPOLYLINE,     *PEMRPOLYLINE,
  1740.     EMRPOLYBEZIER,   *PEMRPOLYBEZIER,
  1741.     EMRPOLYGON,      *PEMRPOLYGON,
  1742.     EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO,
  1743.     EMRPOLYLINETO,   *PEMRPOLYLINETO; 
  1744.  
  1745. typedef struct tagEMRPOLYLINE16
  1746. {
  1747.   EMR    emr; 
  1748.   RECTL  rclBounds; 
  1749.   DWORD  cpts; 
  1750.   POINTL apts[1]; 
  1751. } EMRPOLYLINE16,     *PEMRPOLYLINE16,
  1752.     EMRPOLYBEZIER16,   *PEMRPOLYBEZIER16,
  1753.     EMRPOLYGON16,      *PEMRPOLYGON16,
  1754.     EMRPOLYBEZIERTO16, *PEMRPOLYBEZIERTO16,
  1755.     EMRPOLYLINETO16,   *PEMRPOLYLINETO16; 
  1756.  
  1757. typedef struct tagEMRPOLYPOLYLINE
  1758. {
  1759.   EMR     emr; 
  1760.   RECTL   rclBounds; 
  1761.   DWORD   nPolys; 
  1762.   DWORD   cptl; 
  1763.   DWORD   aPolyCounts[1]; 
  1764.   POINTL  aptl[1]; 
  1765. } EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE,
  1766.     EMRPOLYPOLYGON,  *PEMRPOLYPOLYGON; 
  1767.  
  1768. typedef struct tagEMRPOLYPOLYLINE16
  1769. {
  1770.   EMR     emr; 
  1771.   RECTL   rclBounds;
  1772.   DWORD   nPolys; 
  1773.   DWORD   cpts; 
  1774.   DWORD   aPolyCounts[1]; 
  1775.   POINTS  apts[1]; 
  1776. } EMRPOLYPOLYLINE16, *PEMRPOLYPOLYLINE16,
  1777.     EMRPOLYPOLYGON16,  *PEMRPOLYPOLYGON16; 
  1778.  
  1779. typedef struct tagEMRPOLYTEXTOUTA
  1780. {
  1781.   EMR     emr; 
  1782.   RECTL   rclBounds; 
  1783.   DWORD   iGraphicsMode; 
  1784.   FLOAT   exScale; 
  1785.   FLOAT   eyScale; 
  1786.   LONG    cStrings; 
  1787.   EMRTEXT aemrtext[1]; 
  1788. } EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA,
  1789.     EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW; 
  1790.  
  1791. typedef struct tagEMRRESIZEPALETTE
  1792. {
  1793.   EMR   emr; 
  1794.   DWORD ihPal; 
  1795.   DWORD cEntries; 
  1796. } EMRRESIZEPALETTE, *PEMRRESIZEPALETTE; 
  1797.  
  1798. typedef struct tagEMRRESTOREDC
  1799. {
  1800.   EMR  emr; 
  1801.   LONG iRelative; 
  1802. } EMRRESTOREDC, *PEMRRESTOREDC; 
  1803.  
  1804. typedef struct tagEMRROUNDRECT
  1805. {
  1806.   EMR   emr; 
  1807.   RECTL rclBox; 
  1808.   SIZEL szlCorner; 
  1809. } EMRROUNDRECT, *PEMRROUNDRECT; 
  1810.  
  1811. typedef struct tagEMRSCALEVIEWPORTEXTEX
  1812. {
  1813.   EMR  emr; 
  1814.   LONG xNum; 
  1815.   LONG xDenom; 
  1816.   LONG yNum; 
  1817.   LONG yDenom; 
  1818. } EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX, 
  1819.     EMRSCALEWINDOWEXTEX,   *PEMRSCALEWINDOWEXTEX; 
  1820.  
  1821. typedef struct tagEMRSELECTCOLORSPACE 
  1822.   EMR     emr; 
  1823.   DWORD   ihCS; 
  1824. } EMRSELECTCOLORSPACE, *PEMRSELECTCOLORSPACE,
  1825.     EMRDELETECOLORSPACE, *PEMRDELETECOLORSPACE; 
  1826. typedef struct tagEMRSELECTOBJECT
  1827. {
  1828.   EMR   emr; 
  1829.   DWORD ihObject;
  1830. } EMRSELECTOBJECT, *PEMRSELECTOBJECT,
  1831.     EMRDELETEOBJECT, *PEMRDELETEOBJECT; 
  1832.  
  1833. typedef struct tagEMRSELECTPALETTE 
  1834. {
  1835.   EMR   emr; 
  1836.   DWORD ihPal; 
  1837. } EMRSELECTPALETTE, *PEMRSELECTPALETTE; 
  1838.  
  1839. typedef struct tagEMRSETARCDIRECTION
  1840. {
  1841.   EMR   emr; 
  1842.   DWORD iArcDirection;
  1843. } EMRSETARCDIRECTION, *PEMRSETARCDIRECTION; 
  1844.  
  1845. typedef struct tagEMRSETTEXTCOLOR
  1846. {
  1847.   EMR      emr; 
  1848.   COLORREF crColor; 
  1849. } EMRSETBKCOLOR,   *PEMRSETBKCOLOR,
  1850.     EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR; 
  1851.  
  1852. typedef struct tagEMRSETCOLORADJUSTMENT
  1853. {
  1854.   EMR  emr; 
  1855.   COLORADJUSTMENT ColorAdjustment; 
  1856. } EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT; 
  1857.  
  1858. typedef struct tagEMRSETDIBITSTODEVICE
  1859. {
  1860.   EMR   emr; 
  1861.   RECTL rclBounds; 
  1862.   LONG  xDest; 
  1863.   LONG  yDest; 
  1864.   LONG  xSrc; 
  1865.   LONG  ySrc; 
  1866.   LONG  cxSrc; 
  1867.   LONG  cySrc; 
  1868.   DWORD offBmiSrc; 
  1869.   DWORD cbBmiSrc; 
  1870.   DWORD offBitsSrc; 
  1871.   DWORD cbBitsSrc; 
  1872.   DWORD iUsageSrc; 
  1873.   DWORD iStartScan; 
  1874.   DWORD cScans; 
  1875. } EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE; 
  1876.  
  1877. typedef struct tagEMRSETMAPPERFLAGS
  1878. {
  1879.   EMR   emr; 
  1880.   DWORD dwFlags; 
  1881. } EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS; 
  1882.  
  1883. typedef struct tagEMRSETMITERLIMIT
  1884. {
  1885.   EMR   emr;
  1886.   FLOAT eMiterLimit; 
  1887. } EMRSETMITERLIMIT, *PEMRSETMITERLIMIT; 
  1888.  
  1889. typedef struct tagEMRSETPALETTEENTRIES
  1890. {
  1891.   EMR          emr; 
  1892.   DWORD        ihPal; 
  1893.   DWORD        iStart; 
  1894.   DWORD        cEntries; 
  1895.   PALETTEENTRY aPalEntries[1]; 
  1896. } EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES; 
  1897.  
  1898. typedef struct tagEMRSETPIXELV
  1899. {
  1900.   EMR     emr; 
  1901.   POINTL  ptlPixel; 
  1902.   COLORREF crColor; 
  1903. } EMRSETPIXELV, *PEMRSETPIXELV; 
  1904.  
  1905. typedef struct tagEMRSETVIEWPORTEXTEX
  1906. {
  1907.   EMR   emr; 
  1908.   SIZEL szlExtent; 
  1909. } EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX,
  1910.     EMRSETWINDOWEXTEX,   *PEMRSETWINDOWEXTEX; 
  1911.  
  1912. typedef struct tagEMRSETVIEWPORTORGEX
  1913. {
  1914.   EMR    emr; 
  1915.   POINTL ptlOrigin; 
  1916. } EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX,
  1917.     EMRSETWINDOWORGEX,   *PEMRSETWINDOWORGEX,
  1918.     EMRSETBRUSHORGEX,    *PEMRSETBRUSHORGEX; 
  1919.  
  1920. typedef struct tagEMRSETWORLDTRANSFORM
  1921. {
  1922.   EMR   emr; 
  1923.   XFORM xform; 
  1924. } EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM; 
  1925.  
  1926. typedef struct tagEMRSTRETCHBLT
  1927. {
  1928.   EMR      emr; 
  1929.   RECTL    rclBounds; 
  1930.   LONG     xDest; 
  1931.   LONG     yDest; 
  1932.   LONG     cxDest; 
  1933.   LONG     cyDest; 
  1934.   DWORD    dwRop; 
  1935.   LONG     xSrc; 
  1936.   LONG     ySrc; 
  1937.   XFORM    xformSrc; 
  1938.   COLORREF crBkColorSrc; 
  1939.   DWORD    iUsageSrc; 
  1940.   DWORD    offBmiSrc; 
  1941.   DWORD    cbBmiSrc; 
  1942.   DWORD    offBitsSrc; 
  1943.   DWORD    cbBitsSrc; 
  1944.   LONG     cxSrc; 
  1945.   LONG     cySrc; 
  1946. } EMRSTRETCHBLT, *PEMRSTRETCHBLT; 
  1947.  
  1948. typedef struct tagEMRSTRETCHDIBITS
  1949. {
  1950.   EMR   emr;
  1951.   RECTL rclBounds; 
  1952.   LONG  xDest; 
  1953.   LONG  yDest; 
  1954.   LONG  xSrc; 
  1955.   LONG  ySrc; 
  1956.   LONG  cxSrc; 
  1957.   LONG  cySrc;
  1958.   DWORD offBmiSrc;
  1959.   DWORD cbBmiSrc; 
  1960.   DWORD offBitsSrc; 
  1961.   DWORD cbBitsSrc; 
  1962.   DWORD iUsageSrc; 
  1963.   DWORD dwRop; 
  1964.   LONG  cxDest; 
  1965.   LONG  cyDest; 
  1966. } EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS; 
  1967.  
  1968. typedef struct tagABORTPATH 
  1969.   EMR emr; 
  1970. } EMRABORTPATH,      *PEMRABORTPATH,
  1971.     EMRBEGINPATH,      *PEMRBEGINPATH,
  1972.     EMRENDPATH,        *PEMRENDPATH,
  1973.     EMRCLOSEFIGURE,    *PEMRCLOSEFIGURE,
  1974.     EMRFLATTENPATH,    *PEMRFLATTENPATH,
  1975.     EMRWIDENPATH,      *PEMRWIDENPATH,
  1976.     EMRSETMETARGN,     *PEMRSETMETARGN,
  1977.     EMRSAVEDC,         *PEMRSAVEDC,
  1978.     EMRREALIZEPALETTE, *PEMRREALIZEPALETTE;
  1979.  
  1980. typedef struct tagEMRSELECTCLIPPATH
  1981. {
  1982.   EMR   emr; 
  1983.   DWORD iMode; 
  1984. } EMRSELECTCLIPPATH,    *PEMRSELECTCLIPPATH,
  1985.     EMRSETBKMODE,         *PEMRSETBKMODE,
  1986.     EMRSETMAPMODE,        *PEMRSETMAPMODE,
  1987.     EMRSETPOLYFILLMODE,   *PEMRSETPOLYFILLMODE,
  1988.     EMRSETROP2,           *PEMRSETROP2,
  1989.     EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
  1990.     EMRSETTEXTALIGN,      *PEMRSETTEXTALIGN,
  1991.     EMRENABLEICM,       *PEMRENABLEICM;
  1992.  
  1993. typedef struct tagNMHDR { 
  1994.   HWND hwndFrom; 
  1995.   UINT idFrom; 
  1996.   UINT code; 
  1997. } NMHDR; 
  1998.  
  1999. typedef struct _encorrecttext { 
  2000.   NMHDR nmhdr;     
  2001.   CHARRANGE chrg;  
  2002.   WORD seltyp;     
  2003. } ENCORRECTTEXT; 
  2004.  
  2005. typedef struct _endropfiles { 
  2006.   NMHDR nmhdr; 
  2007.   HANDLE hDrop; 
  2008.   LONG cp; 
  2009.   WINBOOL fProtected; 
  2010. } ENDROPFILES; 
  2011.  
  2012. typedef struct {
  2013.   NMHDR nmhdr;        
  2014.   LONG cObjectCount;  
  2015.   LONG cch;           
  2016. } ENSAVECLIPBOARD;
  2017.  
  2018. typedef struct {
  2019.   NMHDR nmhdr;  
  2020.   LONG iob;     
  2021.   LONG lOper;   
  2022.   HRESULT hr;   
  2023. } ENOLEOPFAILED;
  2024.  
  2025. typedef struct tagENHMETAHEADER { 
  2026.   DWORD iType; 
  2027.   DWORD nSize; 
  2028.   RECTL rclBounds; 
  2029.   RECTL rclFrame; 
  2030.   DWORD dSignature; 
  2031.   DWORD nVersion; 
  2032.   DWORD nBytes; 
  2033.   DWORD nRecords; 
  2034.   WORD  nHandles; 
  2035.   WORD  sReserved; 
  2036.   DWORD nDescription; 
  2037.   DWORD offDescription; 
  2038.   DWORD nPalEntries; 
  2039.   SIZEL szlDevice; 
  2040.   SIZEL szlMillimeters; 
  2041. } ENHMETAHEADER, *LPENHMETAHEADER; 
  2042.  
  2043. typedef struct tagENHMETARECORD { 
  2044.   DWORD iType; 
  2045.   DWORD nSize; 
  2046.   DWORD dParm[1]; 
  2047. } ENHMETARECORD, *PENHMETARECORD, *LPENHMETARECORD; 
  2048.  
  2049. typedef struct _enprotected { 
  2050.   NMHDR nmhdr; 
  2051.   UINT msg; 
  2052.   WPARAM wParam; 
  2053.   LPARAM lParam; 
  2054.   CHARRANGE chrg; 
  2055. } ENPROTECTED; 
  2056.  
  2057. typedef struct _SERVICE_STATUS {
  2058.   DWORD dwServiceType; 
  2059.   DWORD dwCurrentState; 
  2060.   DWORD dwControlsAccepted; 
  2061.   DWORD dwWin32ExitCode; 
  2062.   DWORD dwServiceSpecificExitCode; 
  2063.   DWORD dwCheckPoint; 
  2064.   DWORD dwWaitHint; 
  2065. } SERVICE_STATUS, *LPSERVICE_STATUS; 
  2066.  
  2067. typedef struct _ENUM_SERVICE_STATUS { 
  2068.   LPTSTR lpServiceName; 
  2069.   LPTSTR lpDisplayName; 
  2070.   SERVICE_STATUS ServiceStatus; 
  2071. } ENUM_SERVICE_STATUS, *LPENUM_SERVICE_STATUS; 
  2072.  
  2073. typedef struct tagENUMLOGFONT { 
  2074.   LOGFONT elfLogFont; 
  2075.   BCHAR    elfFullName[LF_FULLFACESIZE]; 
  2076.   BCHAR    elfStyle[LF_FACESIZE]; 
  2077. } ENUMLOGFONT; 
  2078.  
  2079. typedef struct tagENUMLOGFONTEX {
  2080.   LOGFONT  elfLogFont;
  2081.   BCHAR  elfFullName[LF_FULLFACESIZE];
  2082.   BCHAR  elfStyle[LF_FACESIZE];
  2083.   BCHAR  elfScript[LF_FACESIZE];
  2084. } ENUMLOGFONTEX;
  2085.  
  2086. typedef struct _EVENTLOGRECORD {
  2087.   DWORD  Length; 
  2088.   DWORD  Reserved; 
  2089.   DWORD  RecordNumber; 
  2090.   DWORD  TimeGenerated; 
  2091.   DWORD  TimeWritten; 
  2092.   DWORD  EventID; 
  2093.   WORD   EventType; 
  2094.   WORD   NumStrings; 
  2095.   WORD   EventCategory; 
  2096.   WORD   ReservedFlags; 
  2097.   DWORD  ClosingRecordNumber; 
  2098.   DWORD  StringOffset; 
  2099.   DWORD  UserSidLength; 
  2100.   DWORD  UserSidOffset; 
  2101.   DWORD  DataLength; 
  2102.   DWORD  DataOffset; 
  2103.  
  2104. /*
  2105.   Then follow: 
  2106.   
  2107.   TCHAR SourceName[] 
  2108.   TCHAR Computername[] 
  2109.   SID   UserSid 
  2110.   TCHAR Strings[] 
  2111.   BYTE  Data[] 
  2112.   CHAR  Pad[] 
  2113.   DWORD Length; 
  2114. */
  2115.   
  2116. } EVENTLOGRECORD; 
  2117.  
  2118. typedef struct tagEVENTMSG {
  2119.   UINT  message; 
  2120.   UINT  paramL; 
  2121.   UINT  paramH; 
  2122.   DWORD time; 
  2123.   HWND  hwnd; 
  2124. } EVENTMSG; 
  2125.  
  2126. typedef struct _EXCEPTION_POINTERS { 
  2127.   PEXCEPTION_RECORD ExceptionRecord; 
  2128.   PCONTEXT ContextRecord; 
  2129. } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS, *LPEXCEPTION_POINTERS; 
  2130.  
  2131. typedef struct _EXT_BUTTON { 
  2132.   WORD idCommand; 
  2133.   WORD idsHelp; 
  2134.   WORD fsStyle; 
  2135. } EXT_BUTTON, *LPEXT_BUTTON; 
  2136.  
  2137. typedef struct tagFILTERKEYS {   
  2138.   UINT  cbSize; 
  2139.   DWORD dwFlags; 
  2140.   DWORD iWaitMSec; 
  2141.   DWORD iDelayMSec; 
  2142.   DWORD iRepeatMSec; 
  2143.   DWORD iBounceMSec; 
  2144. } FILTERKEYS; 
  2145.  
  2146. typedef struct _FIND_NAME_BUFFER { 
  2147.   UCHAR length; 
  2148.   UCHAR access_control; 
  2149.   UCHAR frame_control; 
  2150.   UCHAR destination_addr[6]; 
  2151.   UCHAR source_addr[6]; 
  2152.   UCHAR routing_info[18]; 
  2153. } FIND_NAME_BUFFER; 
  2154.  
  2155. typedef struct _FIND_NAME_HEADER { 
  2156.   WORD  node_count; 
  2157.   UCHAR reserved; 
  2158.   UCHAR unique_group; 
  2159. } FIND_NAME_HEADER; 
  2160.  
  2161. typedef struct {   
  2162.   DWORD        lStructSize; 
  2163.   HWND         hwndOwner; 
  2164.   HINSTANCE    hInstance; 
  2165.   DWORD        Flags; 
  2166.   LPTSTR        lpstrFindWhat; 
  2167.   LPTSTR        lpstrReplaceWith; 
  2168.   WORD         wFindWhatLen; 
  2169.   WORD         wReplaceWithLen; 
  2170.   LPARAM        lCustData; 
  2171.   LPFRHOOKPROC lpfnHook; 
  2172.   LPCTSTR       lpTemplateName; 
  2173. } FINDREPLACE, *LPFINDREPLACE; 
  2174.  
  2175. typedef struct _findtext { 
  2176.   CHARRANGE chrg; 
  2177.   LPSTR lpstrText; 
  2178. } FINDTEXT; 
  2179.  
  2180. typedef struct _findtextex { 
  2181.   CHARRANGE chrg;  
  2182.   LPSTR lpstrText; 
  2183.   CHARRANGE chrgText; 
  2184. } FINDTEXTEX; 
  2185.  
  2186. typedef struct _FMS_GETDRIVEINFO { 
  2187.   DWORD dwTotalSpace; 
  2188.   DWORD dwFreeSpace; 
  2189.   TCHAR  szPath[260]; 
  2190.   TCHAR  szVolume[14]; 
  2191.   TCHAR  szShare[128]; 
  2192. } FMS_GETDRIVEINFO; 
  2193.  
  2194. typedef struct _FMS_GETFILESEL { 
  2195.   FILETIME ftTime; 
  2196.   DWORD    dwSize; 
  2197.   BYTE     bAttr; 
  2198.   TCHAR     szName[260]; 
  2199. } FMS_GETFILESEL; 
  2200.  
  2201. typedef struct _FMS_LOAD { 
  2202.   DWORD dwSize; 
  2203.   TCHAR  szMenuName[MENU_TEXT_LEN]; 
  2204.   HMENU hMenu; 
  2205.   UINT  wMenuDelta; 
  2206. } FMS_LOAD; 
  2207.  
  2208. typedef struct _FMS_TOOLBARLOAD { 
  2209.   DWORD        dwSize; 
  2210.   LPEXT_BUTTON lpButtons; 
  2211.   WORD         cButtons; 
  2212.   WORD         cBitmaps; 
  2213.   WORD         idBitmap; 
  2214.   HBITMAP      hBitmap; 
  2215. } FMS_TOOLBARLOAD; 
  2216.  
  2217. typedef struct _FOCUS_EVENT_RECORD { 
  2218.   WINBOOL bSetFocus; 
  2219. } FOCUS_EVENT_RECORD; 
  2220.  
  2221. typedef struct _FORM_INFO_1 { 
  2222.   DWORD Flags; 
  2223.   LPTSTR pName; 
  2224.   SIZEL  Size; 
  2225.   RECTL  ImageableArea; 
  2226. } FORM_INFO_1; 
  2227.  
  2228. typedef struct _FORMAT_PARAMETERS { 
  2229.   MEDIA_TYPE MediaType; 
  2230.   DWORD StartCylinderNumber; 
  2231.   DWORD EndCylinderNumber; 
  2232.   DWORD StartHeadNumber; 
  2233.   DWORD EndHeadNumber; 
  2234. } FORMAT_PARAMETERS ; 
  2235.  
  2236. typedef struct _formatrange { 
  2237.   HDC hdc; 
  2238.   HDC hdcTarget; 
  2239.   RECT rc; 
  2240.   RECT rcPage; 
  2241.   CHARRANGE chrg; 
  2242. } FORMATRANGE;       
  2243.  
  2244. typedef struct tagGCP_RESULTS {
  2245.   DWORD  lStructSize;
  2246.   LPTSTR  lpOutString;
  2247.   UINT  *lpOrder;
  2248.   INT  *lpDx;
  2249.   INT  *lpCaretPos;
  2250.   LPTSTR lpClass;
  2251.   UINT  *lpGlyphs;
  2252.   UINT  nGlyphs;
  2253.   UINT  nMaxFit;
  2254. } GCP_RESULTS, *LPGCP_RESULTS;
  2255.  
  2256. typedef struct _GENERIC_MAPPING { 
  2257.   ACCESS_MASK GenericRead; 
  2258.   ACCESS_MASK GenericWrite; 
  2259.   ACCESS_MASK GenericExecute; 
  2260.   ACCESS_MASK GenericAll; 
  2261. } GENERIC_MAPPING, *PGENERIC_MAPPING; 
  2262.  
  2263. typedef struct _GLYPHMETRICS { 
  2264.   UINT  gmBlackBoxX; 
  2265.   UINT  gmBlackBoxY; 
  2266.   POINT gmptGlyphOrigin; 
  2267.   short gmCellIncX; 
  2268.   short gmCellIncY; 
  2269. } GLYPHMETRICS, *LPGLYPHMETRICS; 
  2270.  
  2271. typedef struct tagHANDLETABLE { 
  2272.   HGDIOBJ objectHandle[1]; 
  2273. } HANDLETABLE, *LPHANDLETABLE; 
  2274.  
  2275. typedef struct _HD_HITTESTINFO { 
  2276.   POINT pt; 
  2277.   UINT flags; 
  2278.   int iItem; 
  2279. } HD_HITTESTINFO; 
  2280.  
  2281. typedef struct _HD_ITEM { 
  2282.   UINT    mask; 
  2283.   int     cxy; 
  2284.   LPTSTR   pszText; 
  2285.   HBITMAP hbm; 
  2286.   int     cchTextMax; 
  2287.   int     fmt; 
  2288.   LPARAM  lParam; 
  2289. } HD_ITEM; 
  2290.  
  2291. typedef struct _WINDOWPOS { 
  2292.   HWND hwnd; 
  2293.   HWND hwndInsertAfter; 
  2294.   int  x; 
  2295.   int  y; 
  2296.   int  cx; 
  2297.   int  cy; 
  2298.   UINT flags; 
  2299. } WINDOWPOS, *PWINDOWPOS, *LPWINDOWPOS; 
  2300.  
  2301. typedef struct _HD_LAYOUT { 
  2302.   RECT  * prc; 
  2303.   WINDOWPOS  * pwpos; 
  2304. } HD_LAYOUT; 
  2305.  
  2306. typedef struct _HD_NOTIFY { 
  2307.   NMHDR   hdr; 
  2308.   int     iItem; 
  2309.   int     iButton; 
  2310.   HD_ITEM  * pitem; 
  2311. } HD_NOTIFY; 
  2312.  
  2313. typedef  struct  tagHELPINFO { 
  2314.   UINT   cbSize; 
  2315.   int    iContextType; 
  2316.   int    iCtrlId; 
  2317.   HANDLE hItemHandle; 
  2318.   DWORD  dwContextId; 
  2319.   POINT  MousePos; 
  2320. } HELPINFO,   *LPHELPINFO; 
  2321.  
  2322. typedef struct {   
  2323.   int   wStructSize; 
  2324.   int   x; 
  2325.   int   y; 
  2326.   int   dx; 
  2327.   int   dy; 
  2328.   int   wMax; 
  2329.   TCHAR rgchMember[2]; 
  2330. } HELPWININFO; 
  2331.  
  2332. typedef struct tagHIGHCONTRAST {  
  2333.   UINT cbSize; 
  2334.   DWORD dwFlags; 
  2335.   LPTSTR lpszDefaultScheme; 
  2336. } HIGHCONTRAST,  * LPHIGHCONTRAST; 
  2337.  
  2338. typedef struct tagHSZPAIR { 
  2339.   HSZ hszSvc; 
  2340.   HSZ hszTopic; 
  2341. } HSZPAIR; 
  2342.  
  2343. typedef struct _ICONINFO { 
  2344.   WINBOOL    fIcon; 
  2345.   DWORD   xHotspot; 
  2346.   DWORD   yHotspot; 
  2347.   HBITMAP hbmMask; 
  2348.   HBITMAP hbmColor; 
  2349. } ICONINFO, *PICONINFO; 
  2350.  
  2351. typedef struct tagICONMETRICS { 
  2352.   UINT    cbSize; 
  2353.   int     iHorzSpacing; 
  2354.   int     iVertSpacing; 
  2355.   int     iTitleWrap; 
  2356.   LOGFONT lfFont; 
  2357. } ICONMETRICS,   *LPICONMETRICS; 
  2358.  
  2359. typedef struct _IMAGEINFO { 
  2360.   HBITMAP hbmImage; 
  2361.   HBITMAP hbmMask;  
  2362.   int     Unused1;  
  2363.   int     Unused2;  
  2364.   RECT    rcImage;  
  2365. } IMAGEINFO; 
  2366.  
  2367. typedef struct _KEY_EVENT_RECORD { 
  2368.   WINBOOL bKeyDown;             
  2369.   WORD wRepeatCount;         
  2370.   WORD wVirtualKeyCode;      
  2371.   WORD wVirtualScanCode; 
  2372.  
  2373.   char AsciiChar;
  2374.   char pad;
  2375. #if 0
  2376.   union { 
  2377.     WCHAR UnicodeChar; 
  2378.     CHAR  AsciiChar; 
  2379.   } uChar;  
  2380. #endif
  2381.   DWORD dwControlKeyState;   
  2382. } PACKED KEY_EVENT_RECORD; 
  2383.  
  2384. typedef struct _MOUSE_EVENT_RECORD { 
  2385.   COORD dwMousePosition; 
  2386.   DWORD dwButtonState; 
  2387.   DWORD dwControlKeyState; 
  2388.   DWORD dwEventFlags; 
  2389. } MOUSE_EVENT_RECORD; 
  2390.  
  2391. typedef struct _WINDOW_BUFFER_SIZE_RECORD { 
  2392.   COORD dwSize; 
  2393. } WINDOW_BUFFER_SIZE_RECORD; 
  2394.  
  2395. typedef struct _MENU_EVENT_RECORD { 
  2396.   UINT dwCommandId; 
  2397. } MENU_EVENT_RECORD, *PMENU_EVENT_RECORD; 
  2398.  
  2399. typedef struct _INPUT_RECORD { 
  2400.   WORD EventType; 
  2401.   union { 
  2402. #ifndef __cplus_plus
  2403.     /* this will be the wrong size in c++ */
  2404.     KEY_EVENT_RECORD KeyEvent; 
  2405. #endif
  2406.     MOUSE_EVENT_RECORD MouseEvent; 
  2407.     WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; 
  2408.     MENU_EVENT_RECORD MenuEvent; 
  2409.     FOCUS_EVENT_RECORD FocusEvent; 
  2410.   } Event; 
  2411. } INPUT_RECORD, *PINPUT_RECORD; 
  2412.  
  2413. typedef struct _SYSTEMTIME {  
  2414.   WORD wYear; 
  2415.   WORD wMonth; 
  2416.   WORD wDayOfWeek; 
  2417.   WORD wDay; 
  2418.   WORD wHour; 
  2419.   WORD wMinute; 
  2420.   WORD wSecond; 
  2421.   WORD wMilliseconds; 
  2422. } SYSTEMTIME, *LPSYSTEMTIME; 
  2423.  
  2424. typedef struct _JOB_INFO_1 {  
  2425.   DWORD  JobId; 
  2426.   LPTSTR pPrinterName; 
  2427.   LPTSTR pMachineName; 
  2428.   LPTSTR pUserName; 
  2429.   LPTSTR pDocument; 
  2430.   LPTSTR pDatatype; 
  2431.   LPTSTR pStatus; 
  2432.   DWORD  Status; 
  2433.   DWORD  Priority; 
  2434.   DWORD  Position; 
  2435.   DWORD  TotalPages; 
  2436.   DWORD  PagesPrinted; 
  2437.   SYSTEMTIME Submitted; 
  2438. } JOB_INFO_1; 
  2439.  
  2440. typedef struct _SID_IDENTIFIER_AUTHORITY { 
  2441.   BYTE Value[6]; 
  2442. } SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY, 
  2443.     *LPSID_IDENTIFIER_AUTHORITY; 
  2444.  
  2445. typedef struct _SID {
  2446.    BYTE  Revision;
  2447.    BYTE  SubAuthorityCount;
  2448.    SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
  2449.    DWORD SubAuthority[ANYSIZE_ARRAY];
  2450. } SID, *PSID;
  2451.  
  2452. typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
  2453.  
  2454. typedef struct _SECURITY_DESCRIPTOR {
  2455.   BYTE  Revision;
  2456.   BYTE  Sbz1;
  2457.   SECURITY_DESCRIPTOR_CONTROL Control;
  2458.   PSID Owner;
  2459.   PSID Group;
  2460.   PACL Sacl;
  2461.   PACL Dacl;
  2462. } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
  2463.  
  2464. typedef struct _JOB_INFO_2 { 
  2465.   DWORD      JobId; 
  2466.   LPTSTR     pPrinterName; 
  2467.   LPTSTR     pMachineName; 
  2468.   LPTSTR     pUserName; 
  2469.   LPTSTR     pDocument; 
  2470.   LPTSTR     pNotifyName; 
  2471.   LPTSTR     pDatatype; 
  2472.   LPTSTR     pPrintProcessor; 
  2473.   LPTSTR     pParameters; 
  2474.   LPTSTR     pDriverName; 
  2475.   LPDEVMODE  pDevMode; 
  2476.   LPTSTR     pStatus; 
  2477.   PSECURITY_DESCRIPTOR pSecurityDescriptor; 
  2478.   DWORD      Status; 
  2479.   DWORD      Priority; 
  2480.   DWORD      Position; 
  2481.   DWORD      StartTime; 
  2482.   DWORD      UntilTime; 
  2483.   DWORD      TotalPages; 
  2484.   DWORD      Size; 
  2485.   SYSTEMTIME Submitted; 
  2486.   DWORD      Time; 
  2487.   DWORD      PagesPrinted ; 
  2488. } JOB_INFO_2; 
  2489.  
  2490. typedef struct tagKERNINGPAIR { 
  2491.   WORD wFirst; 
  2492.   WORD wSecond; 
  2493.   int  iKernAmount; 
  2494. } KERNINGPAIR, *LPKERNINGPAIR; 
  2495.  
  2496. typedef struct _LANA_ENUM { 
  2497.   UCHAR length; 
  2498.   UCHAR lana[MAX_LANA]; 
  2499. } LANA_ENUM; 
  2500.  
  2501. typedef struct _LDT_ENTRY { 
  2502.   WORD LimitLow; 
  2503.   WORD BaseLow; 
  2504.   union { 
  2505.     struct { 
  2506.       BYTE BaseMid; 
  2507.       BYTE Flags1; 
  2508.       BYTE Flags2; 
  2509.       BYTE BaseHi; 
  2510.     } Bytes; 
  2511.     struct { 
  2512.       DWORD BaseMid : 8; 
  2513.       DWORD Type : 5; 
  2514.       DWORD Dpl : 2; 
  2515.       DWORD Pres : 1; 
  2516.       DWORD LimitHi : 4; 
  2517.       DWORD Sys : 1; 
  2518.       DWORD Reserved_0 : 1; 
  2519.       DWORD Default_Big : 1; 
  2520.       DWORD Granularity : 1; 
  2521.       DWORD BaseHi : 8; 
  2522.     } Bits; 
  2523.   } HighWord; 
  2524. } LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY; 
  2525.  
  2526. typedef struct tagLOCALESIGNATURE {
  2527.   DWORD  lsUsb[4];
  2528.   DWORD  lsCsbDefault[2];
  2529.   DWORD  lsCsbSupported[2];
  2530. } LOCALESIGNATURE; 
  2531.  
  2532. typedef struct _LOCALGROUP_MEMBERS_INFO_0 {  
  2533.   PSID  lgrmi0_sid; 
  2534. } LOCALGROUP_MEMBERS_INFO_0; 
  2535.  
  2536. typedef struct _LOCALGROUP_MEMBERS_INFO_3 {  
  2537.   LPWSTR  lgrmi3_domainandname; 
  2538. } LOCALGROUP_MEMBERS_INFO_3; 
  2539.  
  2540. typedef long FXPT16DOT16,  * LPFXPT16DOT16; 
  2541.  
  2542. typedef LARGE_INTEGER LUID, *PLUID;
  2543.  
  2544. typedef struct _LUID_AND_ATTRIBUTES { 
  2545.   LUID  Luid; 
  2546.   DWORD Attributes; 
  2547. } LUID_AND_ATTRIBUTES; 
  2548.  
  2549. typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
  2550. typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
  2551.  
  2552. typedef struct _LV_COLUMN { 
  2553.   UINT mask;       
  2554.   int fmt;         
  2555.   int cx;          
  2556.   LPTSTR pszText;  
  2557.   int cchTextMax;  
  2558.   int iSubItem;    
  2559. } LV_COLUMN; 
  2560.  
  2561. typedef struct _LV_ITEM { 
  2562.   UINT   mask;         
  2563.   int    iItem;        
  2564.   int    iSubItem;     
  2565.   UINT   state;        
  2566.   UINT   stateMask;    
  2567.   LPTSTR  pszText;     
  2568.   int    cchTextMax;   
  2569.   int    iImage;      
  2570.   LPARAM lParam;      
  2571. } LV_ITEM; 
  2572.  
  2573. typedef struct tagLV_DISPINFO { 
  2574.   NMHDR   hdr;   
  2575.   LV_ITEM item;  
  2576. } LV_DISPINFO; 
  2577.  
  2578. typedef struct _LV_FINDINFO { 
  2579.   UINT flags;        
  2580.   LPCTSTR psz;        
  2581.   LPARAM lParam;     
  2582.   POINT pt;          
  2583.   UINT vkDirection;  
  2584. } LV_FINDINFO; 
  2585.  
  2586. typedef struct _LV_HITTESTINFO { 
  2587.   POINT pt;    
  2588.   UINT flags;  
  2589.   int iItem;   
  2590. } LV_HITTESTINFO; 
  2591.  
  2592. typedef struct tagLV_KEYDOWN { 
  2593.   NMHDR hdr;   
  2594.   WORD wVKey;  
  2595.   UINT flags;  
  2596. } LV_KEYDOWN; 
  2597.  
  2598. typedef struct _MAT2 { 
  2599.   FIXED eM11; 
  2600.   FIXED eM12; 
  2601.   FIXED eM21; 
  2602.   FIXED eM22; 
  2603. } MAT2; 
  2604.  
  2605. typedef struct tagMDICREATESTRUCT { 
  2606.   LPCTSTR szClass; 
  2607.   LPCTSTR szTitle; 
  2608.   HANDLE  hOwner; 
  2609.   int     x; 
  2610.   int     y; 
  2611.   int     cx; 
  2612.   int     cy; 
  2613.   DWORD   style; 
  2614.   LPARAM  lParam; 
  2615. } MDICREATESTRUCT; 
  2616.  
  2617. typedef MDICREATESTRUCT *LPMDICREATESTRUCT;
  2618.  
  2619. typedef struct tagMEASUREITEMSTRUCT { 
  2620.   UINT  CtlType;      
  2621.   UINT  CtlID;        
  2622.   UINT  itemID;       
  2623.   UINT  itemWidth;    
  2624.   UINT  itemHeight;   
  2625.   DWORD itemData;     
  2626. } MEASUREITEMSTRUCT; 
  2627.  
  2628. typedef struct _MEMORY_BASIC_INFORMATION { 
  2629.   PVOID BaseAddress;            
  2630.   PVOID AllocationBase;         
  2631.   DWORD AllocationProtect;      
  2632.   DWORD RegionSize;             
  2633.   DWORD State;                  
  2634.   DWORD Protect;                
  2635.   DWORD Type;                   
  2636. } MEMORY_BASIC_INFORMATION; 
  2637. typedef MEMORY_BASIC_INFORMATION *PMEMORY_BASIC_INFORMATION; 
  2638.  
  2639. typedef struct _MEMORYSTATUS { 
  2640.   DWORD dwLength;        
  2641.   DWORD dwMemoryLoad;    
  2642.   DWORD dwTotalPhys;     
  2643.   DWORD dwAvailPhys;     
  2644.   DWORD dwTotalPageFile; 
  2645.   DWORD dwAvailPageFile; 
  2646.   DWORD dwTotalVirtual;  
  2647.   DWORD dwAvailVirtual;  
  2648. } MEMORYSTATUS, *LPMEMORYSTATUS; 
  2649.  
  2650. typedef struct {
  2651.   WORD  wVersion; 
  2652.   WORD  wOffset; 
  2653.   DWORD dwHelpId; 
  2654. } MENUEX_TEMPLATE_HEADER;
  2655.  
  2656. typedef struct { 
  2657.   DWORD  dwType; 
  2658.   DWORD  dwState; 
  2659.   UINT   uId; 
  2660.   BYTE   bResInfo; 
  2661.   WCHAR  szText[1]; 
  2662.   DWORD dwHelpId; 
  2663. } MENUEX_TEMPLATE_ITEM; 
  2664.  
  2665. typedef struct tagMENUITEMINFO {
  2666.   UINT    cbSize; 
  2667.   UINT    fMask; 
  2668.   UINT    fType; 
  2669.   UINT    fState; 
  2670.   UINT    wID; 
  2671.   HMENU   hSubMenu; 
  2672.   HBITMAP hbmpChecked; 
  2673.   HBITMAP hbmpUnchecked; 
  2674.   DWORD   dwItemData; 
  2675.   LPTSTR  dwTypeData; 
  2676.   UINT    cch; 
  2677. } MENUITEMINFO, *LPMENUITEMINFO; 
  2678. typedef MENUITEMINFO CONST *LPCMENUITEMINFO;
  2679.  
  2680. typedef struct {   
  2681.   WORD mtOption;      
  2682.   WORD mtID;          
  2683.   WCHAR mtString[1];  
  2684. } MENUITEMTEMPLATE; 
  2685.  
  2686. typedef struct {      
  2687.   WORD versionNumber; 
  2688.   WORD offset;        
  2689. } MENUITEMTEMPLATEHEADER; 
  2690. typedef VOID MENUTEMPLATE, *LPMENUTEMPLATE;
  2691.  
  2692. typedef struct tagMETAFILEPICT { 
  2693.   LONG      mm; 
  2694.   LONG      xExt; 
  2695.   LONG      yExt; 
  2696.   HMETAFILE hMF; 
  2697. } METAFILEPICT, *PMETAFILEPICT, *LPMETAFILEPICT; 
  2698.  
  2699. typedef struct tagMETAHEADER {  
  2700.   WORD  mtType; 
  2701.   WORD  mtHeaderSize; 
  2702.   WORD  mtVersion; 
  2703.   DWORD mtSize; 
  2704.   WORD  mtNoObjects; 
  2705.   DWORD mtMaxRecord; 
  2706.   WORD  mtNoParameters; 
  2707. } PACKED METAHEADER; 
  2708.  
  2709. typedef struct tagMETARECORD {  
  2710.   DWORD rdSize; 
  2711.   WORD  rdFunction; 
  2712.   WORD  rdParm[1]; 
  2713. } METARECORD, *LPMETARECORD; 
  2714.  
  2715. typedef struct tagMINIMIZEDMETRICS { 
  2716.   UINT    cbSize; 
  2717.   int     iWidth; 
  2718.   int     iHorzGap; 
  2719.   int     iVertGap; 
  2720.   int     iArrange; 
  2721. }   MINIMIZEDMETRICS,   *LPMINIMIZEDMETRICS; 
  2722.  
  2723. typedef struct tagMINMAXINFO {  
  2724.   POINT ptReserved;         
  2725.   POINT ptMaxSize;          
  2726.   POINT ptMaxPosition;      
  2727.   POINT ptMinTrackSize;     
  2728.   POINT ptMaxTrackSize;     
  2729. } MINMAXINFO; 
  2730.  
  2731. typedef struct modemdevcaps_tag {
  2732.   DWORD dwActualSize;           
  2733.   DWORD dwRequiredSize;         
  2734.   DWORD dwDevSpecificOffset;    
  2735.   DWORD dwDevSpecificSize;      
  2736.  
  2737.   DWORD dwModemProviderVersion; 
  2738.   DWORD dwModemManufacturerOffset; 
  2739.   DWORD dwModemManufacturerSize;   
  2740.   DWORD dwModemModelOffset;        
  2741.   DWORD dwModemModelSize;          
  2742.   DWORD dwModemVersionOffset;      
  2743.   DWORD dwModemVersionSize;        
  2744.  
  2745.   DWORD dwDialOptions;             
  2746.   DWORD dwCallSetupFailTimer;      
  2747.   DWORD dwInactivityTimeout;       
  2748.   DWORD dwSpeakerVolume;           
  2749.   DWORD dwSpeakerMode;             
  2750.   DWORD dwModemOptions;            
  2751.   DWORD dwMaxDTERate;              
  2752.   DWORD dwMaxDCERate;              
  2753.  
  2754.   BYTE abVariablePortion [1];    
  2755. } MODEMDEVCAPS, *PMODEMDEVCAPS, *LPMODEMDEVCAPS;
  2756.  
  2757. typedef struct modemsettings_tag {
  2758.   DWORD dwActualSize;            
  2759.   DWORD dwRequiredSize;          
  2760.   DWORD dwDevSpecificOffset;     
  2761.   DWORD dwDevSpecificSize;       
  2762.  
  2763.   DWORD dwCallSetupFailTimer;    
  2764.   DWORD dwInactivityTimeout;     
  2765.   DWORD dwSpeakerVolume;         
  2766.   DWORD dwSpeakerMode;           
  2767.   DWORD dwPreferredModemOptions; 
  2768.  
  2769.   DWORD dwNegotiatedModemOptions; 
  2770.   DWORD dwNegotiatedDCERate;      
  2771.  
  2772.   BYTE  abVariablePortion[1];     
  2773. } MODEMSETTINGS, *PMODEMSETTINGS, *LPMODEMSETTINGS;
  2774.  
  2775. typedef struct tagMONCBSTRUCT { 
  2776.   UINT   cb; 
  2777.   DWORD  dwTime; 
  2778.   HANDLE hTask; 
  2779.   DWORD  dwRet; 
  2780.   UINT   wType; 
  2781.   UINT   wFmt; 
  2782.   HCONV  hConv; 
  2783.   HSZ    hsz1; 
  2784.   HSZ    hsz2; 
  2785.   HDDEDATA hData; 
  2786.   DWORD    dwData1; 
  2787.   DWORD    dwData2; 
  2788.   CONVCONTEXT cc; 
  2789.   DWORD  cbData; 
  2790.   DWORD  Data[8]; 
  2791. } MONCBSTRUCT; 
  2792.  
  2793. typedef struct tagMONCONVSTRUCT { 
  2794.   UINT   cb; 
  2795.   WINBOOL   fConnect; 
  2796.   DWORD  dwTime; 
  2797.   HANDLE hTask; 
  2798.   HSZ    hszSvc; 
  2799.   HSZ    hszTopic; 
  2800.   HCONV  hConvClient; 
  2801.   HCONV  hConvServer; 
  2802. } MONCONVSTRUCT; 
  2803.  
  2804. typedef struct tagMONERRSTRUCT { 
  2805.   UINT   cb; 
  2806.   UINT   wLastError; 
  2807.   DWORD  dwTime; 
  2808.   HANDLE hTask; 
  2809. } MONERRSTRUCT; 
  2810.  
  2811. typedef struct tagMONHSZSTRUCT { 
  2812.   UINT   cb; 
  2813.   WINBOOL   fsAction; 
  2814.   DWORD  dwTime; 
  2815.   HSZ    hsz; 
  2816.   HANDLE hTask; 
  2817.   TCHAR   str[1]; 
  2818. } MONHSZSTRUCT; 
  2819.  
  2820. typedef struct _MONITOR_INFO_1 { 
  2821.   LPTSTR pName; 
  2822. } MONITOR_INFO_1; 
  2823.  
  2824. typedef struct _MONITOR_INFO_2 { 
  2825.   LPTSTR pName; 
  2826.   LPTSTR pEnvironment ; 
  2827.   LPTSTR pDLLName ; 
  2828. } MONITOR_INFO_2; 
  2829.  
  2830. typedef struct tagMONLINKSTRUCT { 
  2831.   UINT   cb; 
  2832.   DWORD  dwTime; 
  2833.   HANDLE hTask; 
  2834.   WINBOOL   fEstablished; 
  2835.   WINBOOL   fNoData; 
  2836.   HSZ    hszSvc; 
  2837.   HSZ    hszTopic; 
  2838.   HSZ    hszItem; 
  2839.   UINT   wFmt; 
  2840.   WINBOOL   fServer; 
  2841.   HCONV  hConvServer; 
  2842.   HCONV  hConvClient; 
  2843. } MONLINKSTRUCT; 
  2844.  
  2845. typedef struct tagMONMSGSTRUCT { 
  2846.   UINT   cb; 
  2847.   HWND   hwndTo; 
  2848.   DWORD  dwTime; 
  2849.   HANDLE hTask; 
  2850.   UINT   wMsg; 
  2851.   WPARAM wParam; 
  2852.   LPARAM lParam; 
  2853.   DDEML_MSG_HOOK_DATA dmhd; 
  2854. } MONMSGSTRUCT; 
  2855.  
  2856. typedef struct tagMOUSEHOOKSTRUCT { 
  2857.   POINT pt; 
  2858.   HWND  hwnd; 
  2859.   UINT  wHitTestCode; 
  2860.   DWORD dwExtraInfo; 
  2861. } MOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT, *LPMOUSEHOOKSTRUCT; 
  2862.  
  2863. typedef struct _MOUSEKEYS { 
  2864.   DWORD cbSize; 
  2865.   DWORD dwFlags; 
  2866.   DWORD iMaxSpeed; 
  2867.   DWORD iTimeToMaxSpeed; 
  2868.   DWORD iCtrlSpeed; 
  2869.   DWORD dwReserved1; 
  2870.   DWORD dwReserved2; 
  2871. } MOUSEKEYS; 
  2872.  
  2873. typedef struct tagMSG {  
  2874.   HWND   hwnd;   
  2875.   UINT   message; 
  2876.   WPARAM wParam; 
  2877.   LPARAM lParam; 
  2878.   DWORD  time; 
  2879.   POINT  pt; 
  2880. } MSG, *LPMSG; 
  2881.  
  2882. typedef void CALLBACK (*MSGBOXCALLBACK) (LPHELPINFO lpHelpInfo);
  2883.  
  2884. typedef struct { 
  2885.   UINT      cbSize; 
  2886.   HWND      hwndOwner; 
  2887.   HINSTANCE hInstance; 
  2888.   LPCSTR    lpszText; 
  2889.   LPCSTR    lpszCaption; 
  2890.   DWORD     dwStyle; 
  2891.   LPCSTR    lpszIcon; 
  2892.   DWORD     dwContextHelpId; 
  2893.   MSGBOXCALLBACK lpfnMsgBoxCallback; 
  2894.   DWORD     dwLanguageId; 
  2895. } MSGBOXPARAMS, *PMSGBOXPARAMS,   *LPMSGBOXPARAMS; 
  2896.  
  2897. typedef struct _msgfilter { 
  2898.   NMHDR nmhdr; 
  2899.   UINT msg; 
  2900.   WPARAM wParam; 
  2901.   LPARAM lParam; 
  2902. } MSGFILTER; 
  2903.  
  2904. typedef struct tagMULTIKEYHELP { 
  2905.   DWORD  mkSize; 
  2906.   TCHAR  mkKeylist; 
  2907.   TCHAR  szKeyphrase[1]; 
  2908. } MULTIKEYHELP; 
  2909.  
  2910. typedef struct _NAME_BUFFER { 
  2911.   UCHAR name[NCBNAMSZ]; 
  2912.   UCHAR name_num; 
  2913.   UCHAR name_flags; 
  2914. } NAME_BUFFER; 
  2915.  
  2916. typedef struct _NCB { 
  2917.   UCHAR  ncb_command; 
  2918.   UCHAR  ncb_retcode; 
  2919.   UCHAR  ncb_lsn; 
  2920.   UCHAR  ncb_num; 
  2921.   PUCHAR ncb_buffer; 
  2922.   WORD   ncb_length; 
  2923.   UCHAR  ncb_callname[NCBNAMSZ]; 
  2924.   UCHAR  ncb_name[NCBNAMSZ]; 
  2925.   UCHAR  ncb_rto; 
  2926.   UCHAR  ncb_sto; 
  2927.   void (*ncb_post) (struct _NCB *); 
  2928.   UCHAR  ncb_lana_num; 
  2929.   UCHAR  ncb_cmd_cplt; 
  2930.   UCHAR  ncb_reserve[10]; 
  2931.   HANDLE ncb_event; 
  2932. } NCB; 
  2933.  
  2934. typedef struct _NCCALCSIZE_PARAMS { 
  2935.   RECT        rgrc[3]; 
  2936.   PWINDOWPOS  lppos; 
  2937. } NCCALCSIZE_PARAMS; 
  2938.  
  2939. typedef struct _NDDESHAREINFO { 
  2940.   LONG   lRevision; 
  2941.   LPTSTR lpszShareName; 
  2942.   LONG   lShareType; 
  2943.   LPTSTR lpszAppTopicList; 
  2944.   LONG   fSharedFlag; 
  2945.   LONG   fService; 
  2946.   LONG   fStartAppFlag; 
  2947.   LONG   nCmdShow; 
  2948.   LONG   qModifyId[2]; 
  2949.   LONG   cNumItems; 
  2950.   LPTSTR lpszItemList; 
  2951. }NDDESHAREINFO; 
  2952.  
  2953. typedef struct _NETRESOURCE { 
  2954.   DWORD  dwScope; 
  2955.   DWORD  dwType; 
  2956.   DWORD  dwDisplayType; 
  2957.   DWORD  dwUsage; 
  2958.   LPTSTR lpLocalName; 
  2959.   LPTSTR lpRemoteName; 
  2960.   LPTSTR lpComment; 
  2961.   LPTSTR lpProvider; 
  2962. } NETRESOURCE, *LPNETRESOURCE; 
  2963.  
  2964. typedef struct tagNEWCPLINFO {
  2965.   DWORD dwSize; 
  2966.   DWORD dwFlags; 
  2967.   DWORD dwHelpContext; 
  2968.   LONG  lData; 
  2969.   HICON hIcon; 
  2970.   TCHAR  szName[32]; 
  2971.   TCHAR  szInfo[64]; 
  2972.   TCHAR  szHelpFile[128]; 
  2973. } NEWCPLINFO; 
  2974.  
  2975. typedef struct tagNEWTEXTMETRIC { 
  2976.   LONG   tmHeight; 
  2977.   LONG   tmAscent; 
  2978.   LONG   tmDescent; 
  2979.   LONG   tmInternalLeading; 
  2980.   LONG   tmExternalLeading; 
  2981.   LONG   tmAveCharWidth; 
  2982.   LONG   tmMaxCharWidth; 
  2983.   LONG   tmWeight; 
  2984.   LONG   tmOverhang; 
  2985.   LONG   tmDigitizedAspectX; 
  2986.   LONG   tmDigitizedAspectY; 
  2987.   BCHAR  tmFirstChar; 
  2988.   BCHAR  tmLastChar; 
  2989.   BCHAR  tmDefaultChar; 
  2990.   BCHAR  tmBreakChar; 
  2991.   BYTE   tmItalic; 
  2992.   BYTE   tmUnderlined; 
  2993.   BYTE   tmStruckOut; 
  2994.   BYTE   tmPitchAndFamily; 
  2995.   BYTE   tmCharSet; 
  2996.   DWORD  ntmFlags; 
  2997.   UINT   ntmSizeEM; 
  2998.   UINT   ntmCellHeight; 
  2999.   UINT   ntmAvgWidth; 
  3000. } NEWTEXTMETRIC; 
  3001.  
  3002.  
  3003. typedef struct tagNEWTEXTMETRICEX {
  3004.   NEWTEXTMETRIC  ntmentm;
  3005.   FONTSIGNATURE  ntmeFontSignature;
  3006. } NEWTEXTMETRICEX;
  3007.  
  3008. typedef struct tagNM_LISTVIEW { 
  3009.   NMHDR hdr;        
  3010.   int   iItem;      
  3011.   int   iSubItem;   
  3012.   UINT  uNewState;  
  3013.   UINT  uOldState;  
  3014.   UINT  uChanged;   
  3015.   POINT ptAction;   
  3016.   LPARAM lParam;    
  3017. } NM_LISTVIEW; 
  3018.  
  3019. typedef struct _TREEITEM *HTREEITEM;
  3020.  
  3021. typedef struct _TV_ITEM { 
  3022.   UINT       mask;           
  3023.   HTREEITEM  hItem;           
  3024.   UINT       state;           
  3025.   UINT       stateMask;     
  3026.   LPTSTR     pszText;        
  3027.   int        cchTextMax;      
  3028.   int        iImage;          
  3029.   int        iSelectedImage;  
  3030.   int        cChildren;       
  3031.   LPARAM     lParam;          
  3032. } TV_ITEM,   *LPTV_ITEM; 
  3033.  
  3034. typedef struct _NM_TREEVIEW { 
  3035.   NMHDR    hdr;       
  3036.   UINT     action;        
  3037.   TV_ITEM  itemOld;   
  3038.   TV_ITEM  itemNew;   
  3039.   POINT    ptDrag;    
  3040. } NM_TREEVIEW; 
  3041. typedef NM_TREEVIEW   *LPNM_TREEVIEW; 
  3042.  
  3043. typedef struct _NM_UPDOWN {
  3044.   NMHDR    hdr;    
  3045.   int     iPos;    
  3046.   int  iDelta;     
  3047. } NM_UPDOWNW; 
  3048.  
  3049. typedef struct tagNONCLIENTMETRICS { 
  3050.   UINT    cbSize; 
  3051.   int     iBorderWidth; 
  3052.   int     iScrollWidth; 
  3053.   int     iScrollHeight; 
  3054.   int     iCaptionWidth; 
  3055.   int     iCaptionHeight; 
  3056.   LOGFONT lfCaptionFont; 
  3057.   int     iSmCaptionWidth; 
  3058.   int     iSmCaptionHeight; 
  3059.   LOGFONT lfSmCaptionFont; 
  3060.   int     iMenuWidth; 
  3061.   int     iMenuHeight; 
  3062.   LOGFONT lfMenuFont; 
  3063.   LOGFONT lfStatusFont; 
  3064.   LOGFONT lfMessageFont; 
  3065. } NONCLIENTMETRICS,  * LPNONCLIENTMETRICS; 
  3066.  
  3067. typedef struct _SERVICE_ADDRESS { 
  3068.   DWORD   dwAddressType; 
  3069.   DWORD   dwAddressFlags; 
  3070.   DWORD   dwAddressLength; 
  3071.   DWORD   dwPrincipalLength; 
  3072.   BYTE   *lpAddress;  
  3073.   BYTE   *lpPrincipal; 
  3074. } SERVICE_ADDRESS; 
  3075.  
  3076. typedef struct _SERVICE_ADDRESSES { 
  3077.   DWORD   dwAddressCount; 
  3078.   SERVICE_ADDRESS   Addresses[1]; 
  3079. } SERVICE_ADDRESSES, *LPSERVICE_ADDRESSES; 
  3080.  
  3081. typedef struct _GUID
  3082.     unsigned long  Data1; 
  3083.     unsigned short  Data2; 
  3084.     unsigned short  Data3; 
  3085.     unsigned char Data4[8]; 
  3086. } GUID, *LPGUID;
  3087. typedef GUID CLSID, *LPCLSID;
  3088.  
  3089. typedef struct _SERVICE_INFO { 
  3090.   LPGUID   lpServiceType; 
  3091.   LPTSTR   lpServiceName; 
  3092.   LPTSTR   lpComment; 
  3093.   LPTSTR   lpLocale; 
  3094.   DWORD    dwDisplayHint; 
  3095.   DWORD    dwVersion; 
  3096.   DWORD    dwTime; 
  3097.   LPTSTR   lpMachineName; 
  3098.   LPSERVICE_ADDRESSES lpServiceAddress; 
  3099.   BLOB ServiceSpecificInfo; 
  3100. } SERVICE_INFO; 
  3101.  
  3102. typedef struct _NS_SERVICE_INFO { 
  3103.   DWORD   dwNameSpace; 
  3104.   SERVICE_INFO ServiceInfo; 
  3105. } NS_SERVICE_INFO; 
  3106.  
  3107. typedef struct _numberfmt { 
  3108.   UINT      NumDigits; 
  3109.   UINT      LeadingZero; 
  3110.   UINT      Grouping; 
  3111.   LPTSTR    lpDecimalSep; 
  3112.   LPTSTR    lpThousandSep; 
  3113.   UINT      NegativeOrder; 
  3114. } NUMBERFMT; 
  3115.  
  3116. typedef struct _OFSTRUCT { 
  3117.   BYTE cBytes; 
  3118.   BYTE fFixedDisk; 
  3119.   WORD nErrCode; 
  3120.   WORD Reserved1; 
  3121.   WORD Reserved2; 
  3122.   CHAR szPathName[OFS_MAXPATHNAME]; 
  3123. } OFSTRUCT, *LPOFSTRUCT; 
  3124.  
  3125. typedef struct tagOFN { 
  3126.   DWORD         lStructSize; 
  3127.   HWND          hwndOwner; 
  3128.   HINSTANCE     hInstance; 
  3129.   LPCTSTR       lpstrFilter; 
  3130.   LPTSTR        lpstrCustomFilter; 
  3131.   DWORD         nMaxCustFilter; 
  3132.   DWORD         nFilterIndex; 
  3133.   LPTSTR        lpstrFile; 
  3134.   DWORD         nMaxFile; 
  3135.   LPTSTR        lpstrFileTitle; 
  3136.   DWORD         nMaxFileTitle; 
  3137.   LPCTSTR       lpstrInitialDir; 
  3138.   LPCTSTR       lpstrTitle; 
  3139.   DWORD         Flags; 
  3140.   WORD          nFileOffset; 
  3141.   WORD          nFileExtension; 
  3142.   LPCTSTR       lpstrDefExt; 
  3143.   DWORD         lCustData; 
  3144.   LPOFNHOOKPROC lpfnHook; 
  3145.   LPCTSTR       lpTemplateName; 
  3146. } OPENFILENAME, *LPOPENFILENAME; 
  3147.  
  3148. typedef struct _OFNOTIFY {
  3149.   NMHDR          hdr; 
  3150.   LPOPENFILENAME lpOFN; 
  3151.   LPTSTR         pszFile; 
  3152. } OFNOTIFY, *LPOFNOTIFY; 
  3153.  
  3154. typedef struct _OSVERSIONINFO { 
  3155.   DWORD dwOSVersionInfoSize; 
  3156.   DWORD dwMajorVersion; 
  3157.   DWORD dwMinorVersion; 
  3158.   DWORD dwBuildNumber; 
  3159.   DWORD dwPlatformId; 
  3160.   TCHAR szCSDVersion[ 128 ]; 
  3161. } OSVERSIONINFO, *POSVERSIONINFO, *LPOSVERSIONINFO; 
  3162.  
  3163. typedef struct tagTEXTMETRIC { 
  3164.   LONG tmHeight; 
  3165.   LONG tmAscent; 
  3166.   LONG tmDescent; 
  3167.   LONG tmInternalLeading; 
  3168.   LONG tmExternalLeading; 
  3169.   LONG tmAveCharWidth; 
  3170.   LONG tmMaxCharWidth; 
  3171.   LONG tmWeight; 
  3172.   LONG tmOverhang; 
  3173.   LONG tmDigitizedAspectX; 
  3174.   LONG tmDigitizedAspectY; 
  3175.   BCHAR tmFirstChar; 
  3176.   BCHAR tmLastChar; 
  3177.   BCHAR tmDefaultChar; 
  3178.   BCHAR tmBreakChar; 
  3179.   BYTE tmItalic; 
  3180.   BYTE tmUnderlined; 
  3181.   BYTE tmStruckOut; 
  3182.   BYTE tmPitchAndFamily; 
  3183.   BYTE tmCharSet; 
  3184. } TEXTMETRIC, *LPTEXTMETRIC; 
  3185.  
  3186. typedef struct _OUTLINETEXTMETRIC { 
  3187.   UINT   otmSize; 
  3188.   TEXTMETRIC otmTextMetrics; 
  3189.   BYTE   otmFiller; 
  3190.   PANOSE otmPanoseNumber; 
  3191.   UINT   otmfsSelection; 
  3192.   UINT   otmfsType; 
  3193.   int    otmsCharSlopeRise; 
  3194.   int    otmsCharSlopeRun; 
  3195.   int    otmItalicAngle; 
  3196.   UINT   otmEMSquare; 
  3197.   int    otmAscent; 
  3198.   int    otmDescent; 
  3199.   UINT   otmLineGap; 
  3200.   UINT   otmsCapEmHeight; 
  3201.   UINT   otmsXHeight; 
  3202.   RECT   otmrcFontBox; 
  3203.   int    otmMacAscent; 
  3204.   int    otmMacDescent; 
  3205.   UINT   otmMacLineGap; 
  3206.   UINT   otmusMinimumPPEM; 
  3207.   POINT  otmptSubscriptSize; 
  3208.   POINT  otmptSubscriptOffset; 
  3209.   POINT  otmptSuperscriptSize; 
  3210.   POINT  otmptSuperscriptOffset; 
  3211.   UINT   otmsStrikeoutSize; 
  3212.   int    otmsStrikeoutPosition; 
  3213.   int    otmsUnderscoreSize; 
  3214.   int    otmsUnderscorePosition; 
  3215.   PSTR   otmpFamilyName; 
  3216.   PSTR   otmpFaceName; 
  3217.   PSTR   otmpStyleName; 
  3218.   PSTR   otmpFullName; 
  3219. } OUTLINETEXTMETRIC, *LPOUTLINETEXTMETRIC; 
  3220.  
  3221. typedef struct _OVERLAPPED { 
  3222.   DWORD  Internal; 
  3223.   DWORD  InternalHigh; 
  3224.   DWORD  Offset; 
  3225.   DWORD  OffsetHigh; 
  3226.   HANDLE hEvent; 
  3227. } OVERLAPPED, *LPOVERLAPPED; 
  3228.  
  3229. typedef struct tagPSD {
  3230.     DWORD           lStructSize; 
  3231.     HWND            hwndOwner; 
  3232.     HGLOBAL         hDevMode; 
  3233.     HGLOBAL         hDevNames; 
  3234.     DWORD           Flags; 
  3235.     POINT           ptPaperSize; 
  3236.     RECT            rtMinMargin; 
  3237.     RECT            rtMargin; 
  3238.     HINSTANCE       hInstance; 
  3239.     LPARAM          lCustData; 
  3240.     LPPAGESETUPHOOK lpfnPageSetupHook; 
  3241.     LPPAGEPAINTHOOK lpfnPagePaintHook; 
  3242.     LPCTSTR         lpPageSetupTemplateName; 
  3243.     HGLOBAL         hPageSetupTemplate; 
  3244. } PAGESETUPDLG, *LPPAGESETUPDLG; 
  3245.  
  3246. typedef struct tagPAINTSTRUCT { 
  3247.   HDC  hdc; 
  3248.   WINBOOL fErase; 
  3249.   RECT rcPaint; 
  3250.   WINBOOL fRestore; 
  3251.   WINBOOL fIncUpdate; 
  3252.   BYTE rgbReserved[32]; 
  3253. } PAINTSTRUCT, *LPPAINTSTRUCT; 
  3254.  
  3255. typedef struct _paraformat { 
  3256.   UINT cbSize; 
  3257.   DWORD dwMask; 
  3258.   WORD  wNumbering; 
  3259.   WORD  wReserved; 
  3260.   LONG  dxStartIndent; 
  3261.   LONG  dxRightIndent; 
  3262.   LONG  dxOffset; 
  3263.   WORD  wAlignment; 
  3264.   SHORT cTabCount; 
  3265.   LONG  rgxTabs[MAX_TAB_STOPS]; 
  3266. } PARAFORMAT; 
  3267.  
  3268. typedef struct _PERF_COUNTER_BLOCK { 
  3269.   DWORD ByteLength; 
  3270. } PERF_COUNTER_BLOCK; 
  3271.  
  3272. typedef struct _PERF_COUNTER_DEFINITION { 
  3273.   DWORD  ByteLength; 
  3274.   DWORD  CounterNameTitleIndex; 
  3275.   LPWSTR CounterNameTitle; 
  3276.   DWORD  CounterHelpTitleIndex; 
  3277.   LPWSTR CounterHelpTitle; 
  3278.   DWORD  DefaultScale; 
  3279.   DWORD  DetailLevel; 
  3280.   DWORD  CounterType; 
  3281.   DWORD  CounterSize; 
  3282.   DWORD  CounterOffset; 
  3283. } PERF_COUNTER_DEFINITION; 
  3284.  
  3285. typedef struct _PERF_DATA_BLOCK { 
  3286.   WCHAR         Signature[4]; 
  3287.   DWORD         LittleEndian; 
  3288.   DWORD         Version; 
  3289.   DWORD         Revision; 
  3290.   DWORD         TotalByteLength; 
  3291.   DWORD         HeaderLength; 
  3292.   DWORD         NumObjectTypes; 
  3293.   DWORD         DefaultObject; 
  3294.   SYSTEMTIME    SystemTime; 
  3295.   LARGE_INTEGER PerfTime; 
  3296.   LARGE_INTEGER PerfFreq; 
  3297.   LARGE_INTEGER PerfTime100nSec; 
  3298.   DWORD         SystemNameLength; 
  3299.   DWORD         SystemNameOffset; 
  3300. } PERF_DATA_BLOCK; 
  3301.  
  3302. typedef struct _PERF_INSTANCE_DEFINITION { 
  3303.   DWORD ByteLength; 
  3304.   DWORD ParentObjectTitleIndex; 
  3305.   DWORD ParentObjectInstance; 
  3306.   DWORD UniqueID; 
  3307.   DWORD NameOffset; 
  3308.   DWORD NameLength; 
  3309. } PERF_INSTANCE_DEFINITION; 
  3310.  
  3311. typedef struct _PERF_OBJECT_TYPE { 
  3312.   DWORD  TotalByteLength; 
  3313.   DWORD  DefinitionLength; 
  3314.   DWORD  HeaderLength; 
  3315.   DWORD  ObjectNameTitleIndex; 
  3316.   LPWSTR ObjectNameTitle; 
  3317.   DWORD  ObjectHelpTitleIndex; 
  3318.   LPWSTR ObjectHelpTitle; 
  3319.   DWORD  DetailLevel; 
  3320.   DWORD  NumCounters; 
  3321.   DWORD  DefaultCounter; 
  3322.   DWORD  NumInstances; 
  3323.   DWORD  CodePage; 
  3324.   LARGE_INTEGER PerfTime; 
  3325.   LARGE_INTEGER PerfFreq; 
  3326. } PERF_OBJECT_TYPE; 
  3327.  
  3328. typedef struct _POLYTEXT { 
  3329.   int     x; 
  3330.   int     y; 
  3331.   UINT    n; 
  3332.   LPCTSTR lpstr; 
  3333.   UINT    uiFlags; 
  3334.   RECT    rcl; 
  3335.   int     *pdx; 
  3336. } POLYTEXT; 
  3337.  
  3338. typedef struct _PORT_INFO_1 { 
  3339.   LPTSTR pName; 
  3340. } PORT_INFO_1; 
  3341.  
  3342. typedef struct _PORT_INFO_2 { 
  3343.   LPSTR pPortName; 
  3344.   LPSTR pMonitorName; 
  3345.   LPSTR pDescription; 
  3346.   DWORD fPortType; 
  3347.   DWORD Reserved; 
  3348. } PORT_INFO_2; 
  3349.  
  3350. typedef struct _PREVENT_MEDIA_REMOVAL { 
  3351.   BOOLEAN PreventMediaRemoval; 
  3352. } PREVENT_MEDIA_REMOVAL ; 
  3353.  
  3354. typedef struct tagPD {  
  3355.   DWORD     lStructSize; 
  3356.   HWND      hwndOwner; 
  3357.   HANDLE    hDevMode; 
  3358.   HANDLE    hDevNames; 
  3359.   HDC       hDC; 
  3360.   DWORD     Flags; 
  3361.   WORD      nFromPage; 
  3362.   WORD      nToPage; 
  3363.   WORD      nMinPage; 
  3364.   WORD      nMaxPage; 
  3365.   WORD      nCopies; 
  3366.   HINSTANCE hInstance; 
  3367.   DWORD     lCustData; 
  3368.   LPPRINTHOOKPROC lpfnPrintHook; 
  3369.   LPSETUPHOOKPROC lpfnSetupHook; 
  3370.   LPCTSTR    lpPrintTemplateName; 
  3371.   LPCTSTR    lpSetupTemplateName; 
  3372.   HANDLE    hPrintTemplate; 
  3373.   HANDLE    hSetupTemplate; 
  3374. } PRINTDLG, *LPPRINTDLG; 
  3375.  
  3376. typedef struct _PRINTER_DEFAULTS {  
  3377.   LPTSTR      pDatatype; 
  3378.   LPDEVMODE   pDevMode; 
  3379.   ACCESS_MASK DesiredAccess; 
  3380. } PRINTER_DEFAULTS; 
  3381.  
  3382. typedef struct _PRINTER_INFO_1 { 
  3383.   DWORD  Flags; 
  3384.   LPTSTR pDescription; 
  3385.   LPTSTR pName; 
  3386.   LPTSTR pComment; 
  3387. } PRINTER_INFO_1, *PPRINTER_INFO_1, *LPPRINTER_INFO_1; 
  3388.  
  3389. typedef struct _PRINTER_INFO_2 { 
  3390.   LPTSTR    pServerName; 
  3391.   LPTSTR    pPrinterName; 
  3392.   LPTSTR    pShareName; 
  3393.   LPTSTR    pPortName; 
  3394.   LPTSTR    pDriverName; 
  3395.   LPTSTR    pComment; 
  3396.   LPTSTR    pLocation; 
  3397.   LPDEVMODE pDevMode; 
  3398.   LPTSTR    pSepFile; 
  3399.   LPTSTR    pPrintProcessor; 
  3400.   LPTSTR    pDatatype; 
  3401.   LPTSTR    pParameters; 
  3402.   PSECURITY_DESCRIPTOR pSecurityDescriptor; 
  3403.   DWORD     Attributes; 
  3404.   DWORD     Priority; 
  3405.   DWORD     DefaultPriority; 
  3406.   DWORD     StartTime; 
  3407.   DWORD     UntilTime; 
  3408.   DWORD     Status; 
  3409.   DWORD     cJobs; 
  3410.   DWORD     AveragePPM; 
  3411. } PRINTER_INFO_2; 
  3412.  
  3413. typedef struct _PRINTER_INFO_3 { 
  3414.   PSECURITY_DESCRIPTOR pSecurityDescriptor; 
  3415. } PRINTER_INFO_3; 
  3416.  
  3417. typedef struct _PRINTER_INFO_4 { 
  3418.   LPTSTR  pPrinterName; 
  3419.   LPTSTR  pServerName; 
  3420.   DWORD  Attributes; 
  3421. } PRINTER_INFO_4; 
  3422.  
  3423. typedef struct _PRINTER_INFO_5 { 
  3424.   LPTSTR    pPrinterName; 
  3425.   LPTSTR    pPortName; 
  3426.   DWORD     Attributes; 
  3427.   DWORD     DeviceNotSelectedTimeout; 
  3428.   DWORD     TransmissionRetryTimeout; 
  3429. } PRINTER_INFO_5; 
  3430.  
  3431. typedef struct _PRINTER_NOTIFY_INFO_DATA { 
  3432.   WORD   Type; 
  3433.   WORD   Field; 
  3434.   DWORD  Reserved; 
  3435.   DWORD  Id; 
  3436.   union { 
  3437.     DWORD  adwData[2]; 
  3438.     struct { 
  3439.       DWORD  cbBuf; 
  3440.       LPVOID pBuf; 
  3441.     } Data; 
  3442.   } NotifyData; 
  3443. } PRINTER_NOTIFY_INFO_DATA; 
  3444.  
  3445. typedef struct _PRINTER_NOTIFY_INFO { 
  3446.   DWORD  Version; 
  3447.   DWORD  Flags; 
  3448.   DWORD  Count; 
  3449.   PRINTER_NOTIFY_INFO_DATA  aData[1]; 
  3450. } PRINTER_NOTIFY_INFO; 
  3451.  
  3452. typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE { 
  3453.   WORD   Type; 
  3454.   WORD   Reserved0; 
  3455.   DWORD  Reserved1; 
  3456.   DWORD  Reserved2; 
  3457.   DWORD  Count; 
  3458.   PWORD  pFields; 
  3459. } PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE; 
  3460.  
  3461. typedef struct _PRINTER_NOTIFY_OPTIONS { 
  3462.   DWORD  Version; 
  3463.   DWORD  Flags; 
  3464.   DWORD  Count; 
  3465.   PPRINTER_NOTIFY_OPTIONS_TYPE  pTypes; 
  3466. } PRINTER_NOTIFY_OPTIONS; 
  3467.  
  3468. typedef struct _PRINTPROCESSOR_INFO_1 { 
  3469.   LPTSTR pName; 
  3470. } PRINTPROCESSOR_INFO_1; 
  3471.  
  3472. typedef struct _PRIVILEGE_SET { 
  3473.   DWORD PrivilegeCount; 
  3474.   DWORD Control; 
  3475.   LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; 
  3476. } PRIVILEGE_SET, *PPRIVILEGE_SET, *LPPRIVILEGE_SET; 
  3477.  
  3478. typedef struct _PROCESS_HEAP_ENTRY {  
  3479.   PVOID lpData; 
  3480.   DWORD cbData; 
  3481.   BYTE cbOverhead; 
  3482.   BYTE iRegionIndex; 
  3483.   WORD wFlags; 
  3484.   DWORD dwCommittedSize; 
  3485.   DWORD dwUnCommittedSize; 
  3486.   LPVOID lpFirstBlock; 
  3487.   LPVOID lpLastBlock; 
  3488.   HANDLE hMem; 
  3489. } PROCESS_HEAPENTRY, *LPPROCESS_HEAP_ENTRY; 
  3490.  
  3491. typedef struct _PROCESS_INFORMATION { 
  3492.   HANDLE hProcess; 
  3493.   HANDLE hThread; 
  3494.   DWORD dwProcessId; 
  3495.   DWORD dwThreadId; 
  3496. } PROCESS_INFORMATION, *LPPROCESS_INFORMATION; 
  3497.  
  3498. typedef UINT CALLBACK (*LPFNPSPCALLBACK) (HWND, UINT, LPVOID);
  3499.  
  3500. typedef struct _PROPSHEETPAGE { 
  3501.   DWORD     dwSize;     
  3502.   DWORD     dwFlags;    
  3503.   HINSTANCE hInstance;  
  3504.   union { 
  3505.     LPCTSTR        pszTemplate;      
  3506.     LPCDLGTEMPLATE pResource;        
  3507.   } u1; 
  3508.   union { 
  3509.     HICON  hIcon;     
  3510.     LPCTSTR pszIcon;  
  3511.   } u2; 
  3512.   LPCTSTR pszTitle;     
  3513.   DLGPROC pfnDlgProc;   
  3514.   LPARAM  lParam;       
  3515.   LPFNPSPCALLBACK pfnCallback;         
  3516.   UINT   * pcRefParent;              
  3517. } PROPSHEETPAGE,   *LPPROPSHEETPAGE; 
  3518. typedef const PROPSHEETPAGE   *LPCPROPSHEETPAGE; 
  3519.  
  3520. typedef struct _PSP *HPROPSHEETPAGE;
  3521. typedef struct _PROPSHEETHEADER { 
  3522.   DWORD      dwSize;     
  3523.   DWORD      dwFlags;    
  3524.   HWND       hwndParent; 
  3525.   HINSTANCE  hInstance;  
  3526.   union { 
  3527.     HICON  hIcon;      
  3528.     LPCTSTR pszIcon;   
  3529.   } u1; 
  3530.   LPCTSTR     pszCaption; 
  3531.   UINT       nPages; 
  3532.   union { 
  3533.     UINT  nStartPage; 
  3534.     LPCTSTR pStartPage; 
  3535.   } u2; 
  3536.   union { 
  3537.     LPCPROPSHEETPAGE    ppsp;   
  3538.     HPROPSHEETPAGE   *phpage; 
  3539.   } u3; 
  3540.   PFNPROPSHEETCALLBACK pfnCallback; 
  3541. } PROPSHEETHEADER,   *LPPROPSHEETHEADER; 
  3542. typedef const PROPSHEETHEADER   *LPCPROPSHEETHEADER; 
  3543.  
  3544. /* PropertySheet callbacks */
  3545. typedef WINBOOL CALLBACK (*LPFNADDPROPSHEETPAGE) (HPROPSHEETPAGE, LPARAM);
  3546. typedef WINBOOL CALLBACK (*LPFNADDPROPSHEETPAGES) (LPVOID, 
  3547.                            LPFNADDPROPSHEETPAGE, 
  3548.                            LPARAM);
  3549.  
  3550. typedef  struct _PROTOCOL_INFO {  
  3551.   DWORD  dwServiceFlags; 
  3552.   INT  iAddressFamily; 
  3553.   INT  iMaxSockAddr; 
  3554.   INT  iMinSockAddr; 
  3555.   INT  iSocketType; 
  3556.   INT  iProtocol; 
  3557.   DWORD  dwMessageSize; 
  3558.   LPTSTR  lpProtocol; 
  3559. } PROTOCOL_INFO; 
  3560.  
  3561. typedef struct _PROVIDOR_INFO_1 { 
  3562.   LPTSTR pName; 
  3563.   LPTSTR pEnvironment ; 
  3564.   LPTSTR pDLLName ; 
  3565. } PROVIDOR_INFO_1; 
  3566.  
  3567. typedef struct _PSHNOTIFY { 
  3568.   NMHDR hdr; 
  3569.   LPARAM lParam; 
  3570. } PSHNOTIFY,   *LPPSHNOTIFY; 
  3571.  
  3572. typedef struct _punctuation {
  3573.   UINT   iSize;          
  3574.   LPSTR  szPunctuation;  
  3575. } PUNCTUATION; 
  3576.  
  3577. typedef struct _QUERY_SERVICE_CONFIG { 
  3578.   DWORD dwServiceType; 
  3579.   DWORD dwStartType; 
  3580.   DWORD dwErrorControl; 
  3581.   LPTSTR lpBinaryPathName; 
  3582.   LPTSTR lpLoadOrderGroup; 
  3583.   DWORD dwTagId; 
  3584.   LPTSTR lpDependencies; 
  3585.   LPTSTR lpServiceStartName; 
  3586.   LPTSTR lpDisplayName; 
  3587. } QUERY_SERVICE_CONFIG, *LPQUERY_SERVICE_CONFIG; 
  3588.  
  3589. typedef struct _QUERY_SERVICE_LOCK_STATUS { 
  3590.   DWORD fIsLocked; 
  3591.   LPTSTR lpLockOwner; 
  3592.   DWORD dwLockDuration; 
  3593. } QUERY_SERVICE_LOCK_STATUS, *LPQUERY_SERVICE_LOCK_STATUS ; 
  3594.  
  3595. typedef  struct  _RASAMB {  
  3596.   DWORD    dwSize; 
  3597.   DWORD    dwError; 
  3598.   TCHAR    szNetBiosError[ NETBIOS_NAME_LEN + 1 ]; 
  3599.   BYTE     bLana; 
  3600. } RASAMB; 
  3601.  
  3602. typedef struct _RASCONN { 
  3603.   DWORD     dwSize; 
  3604.   HRASCONN  hrasconn; 
  3605.   TCHAR     szEntryName[RAS_MaxEntryName + 1]; 
  3606.  
  3607.   CHAR      szDeviceType[ RAS_MaxDeviceType + 1 ]; 
  3608.   CHAR      szDeviceName[ RAS_MaxDeviceName + 1 ]; 
  3609. } RASCONN ; 
  3610.  
  3611. typedef struct _RASCONNSTATUS { 
  3612.   DWORD         dwSize; 
  3613.   RASCONNSTATE  rasconnstate; 
  3614.   DWORD         dwError; 
  3615.   TCHAR         szDeviceType[RAS_MaxDeviceType + 1]; 
  3616.   TCHAR         szDeviceName[RAS_MaxDeviceName + 1]; 
  3617. } RASCONNSTATUS; 
  3618.  
  3619. typedef  struct  _RASDIALEXTENSIONS { 
  3620.   DWORD    dwSize; 
  3621.   DWORD    dwfOptions; 
  3622.   HWND    hwndParent; 
  3623.   DWORD    reserved; 
  3624. } RASDIALEXTENSIONS; 
  3625.  
  3626. typedef struct _RASDIALPARAMS { 
  3627.   DWORD  dwSize; 
  3628.   TCHAR  szEntryName[RAS_MaxEntryName + 1]; 
  3629.   TCHAR  szPhoneNumber[RAS_MaxPhoneNumber + 1]; 
  3630.   TCHAR  szCallbackNumber[RAS_MaxCallbackNumber + 1]; 
  3631.   TCHAR  szUserName[UNLEN + 1]; 
  3632.   TCHAR  szPassword[PWLEN + 1]; 
  3633.   TCHAR  szDomain[DNLEN + 1] ; 
  3634. } RASDIALPARAMS; 
  3635.  
  3636. typedef struct _RASENTRYNAME { 
  3637.   DWORD  dwSize; 
  3638.   TCHAR  szEntryName[RAS_MaxEntryName + 1]; 
  3639. }RASENTRYNAME; 
  3640.  
  3641. typedef  struct  _RASPPPIP { 
  3642.   DWORD    dwSize; 
  3643.   DWORD    dwError; 
  3644.   TCHAR    szIpAddress[ RAS_MaxIpAddress + 1 ]; 
  3645. } RASPPPIP; 
  3646.  
  3647. typedef  struct  _RASPPPIPX { 
  3648.   DWORD    dwSize; 
  3649.   DWORD    dwError; 
  3650.   TCHAR    szIpxAddress[ RAS_MaxIpxAddress + 1 ]; 
  3651. } RASPPPIPX; 
  3652.  
  3653. typedef  struct  _RASPPPNBF { 
  3654.   DWORD    dwSize; 
  3655.   DWORD    dwError; 
  3656.   DWORD    dwNetBiosError; 
  3657.   TCHAR    szNetBiosError[ NETBIOS_NAME_LEN + 1 ]; 
  3658.   TCHAR    szWorkstationName[ NETBIOS_NAME_LEN + 1 ]; 
  3659.   BYTE     bLana; 
  3660. } RASPPPNBF; 
  3661.  
  3662. typedef struct _RASTERIZER_STATUS { 
  3663.   short nSize; 
  3664.   short wFlags; 
  3665.   short nLanguageID; 
  3666. } RASTERIZER_STATUS, *LPRASTERIZER_STATUS; 
  3667.  
  3668. typedef struct _REASSIGN_BLOCKS { 
  3669.   WORD   Reserved; 
  3670.   WORD   Count; 
  3671.   DWORD BlockNumber[1]; 
  3672. } REASSIGN_BLOCKS ; 
  3673.  
  3674. typedef struct _REMOTE_NAME_INFO {
  3675.   LPTSTR  lpUniversalName; 
  3676.   LPTSTR  lpConnectionName; 
  3677.   LPTSTR  lpRemainingPath;    
  3678. } REMOTE_NAME_INFO; 
  3679.  
  3680. /*
  3681.  TODO: OLE
  3682. typedef struct _reobject { 
  3683.   DWORD  cbStruct;           
  3684.   LONG   cp;                 
  3685.   CLSID  clsid;              
  3686.   LPOLEOBJECT      poleobj;  
  3687.   LPSTORAGE        pstg;     
  3688.   LPOLECLIENTSITE  polesite; 
  3689.   SIZEL  sizel;              
  3690.   DWORD  dvaspect;           
  3691.   DWORD  dwFlags;            
  3692.   DWORD  dwUser;             
  3693. } REOBJECT; 
  3694. */
  3695.  
  3696. typedef struct _repastespecial { 
  3697.   DWORD  dwAspect;  
  3698.   DWORD  dwParam;   
  3699. } REPASTESPECIAL; 
  3700.  
  3701. typedef struct _reqresize { 
  3702.   NMHDR nmhdr; 
  3703.   RECT rc; 
  3704. } REQRESIZE; 
  3705.  
  3706. typedef struct _RGNDATAHEADER { 
  3707.   DWORD dwSize; 
  3708.   DWORD iType; 
  3709.   DWORD nCount; 
  3710.   DWORD nRgnSize; 
  3711.   RECT  rcBound; 
  3712. } RGNDATAHEADER; 
  3713.  
  3714. typedef struct _RGNDATA { 
  3715.   RGNDATAHEADER rdh; 
  3716.   char          Buffer[1]; 
  3717. } RGNDATA, *LPRGNDATA; 
  3718.  
  3719. typedef struct tagSCROLLINFO {
  3720.   UINT cbSize; 
  3721.   UINT fMask; 
  3722.   int  nMin; 
  3723.   int  nMax; 
  3724.   UINT nPage; 
  3725.   int  nPos; 
  3726.   int  nTrackPos; 
  3727. }   SCROLLINFO, *LPSCROLLINFO; 
  3728. typedef SCROLLINFO const *LPCSCROLLINFO; 
  3729.  
  3730. typedef struct _SECURITY_ATTRIBUTES { 
  3731.   DWORD  nLength; 
  3732.   LPVOID lpSecurityDescriptor; 
  3733.   WINBOOL   bInheritHandle; 
  3734. } SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; 
  3735.  
  3736. typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION; 
  3737.  
  3738. typedef struct _selchange { 
  3739.   NMHDR nmhdr; 
  3740.   CHARRANGE chrg; 
  3741.   WORD seltyp; 
  3742. } SELCHANGE; 
  3743.  
  3744. typedef struct tagSERIALKEYS {  
  3745.   DWORD cbSize; 
  3746.   DWORD dwFlags; 
  3747.   LPSTR lpszActivePort; 
  3748.   LPSTR lpszPort; 
  3749.   DWORD iBaudRate; 
  3750.   DWORD iPortState; 
  3751. } SERIALKEYS,  * LPSERIALKEYS; 
  3752.  
  3753. typedef struct _SERVICE_TABLE_ENTRY { 
  3754.   LPTSTR lpServiceName; 
  3755.   LPSERVICE_MAIN_FUNCTION lpServiceProc; 
  3756. } SERVICE_TABLE_ENTRY, *LPSERVICE_TABLE_ENTRY; 
  3757.  
  3758. typedef struct _SERVICE_TYPE_VALUE_ABS { 
  3759.   DWORD   dwNameSpace; 
  3760.   DWORD   dwValueType; 
  3761.   DWORD   dwValueSize; 
  3762.   LPTSTR  lpValueName; 
  3763.   PVOID   lpValue; 
  3764. } SERVICE_TYPE_VALUE_ABS; 
  3765.  
  3766. typedef struct _SERVICE_TYPE_INFO_ABS { 
  3767.   LPTSTR                  lpTypeName; 
  3768.   DWORD                   dwValueCount; 
  3769.   SERVICE_TYPE_VALUE_ABS  Values[1]; 
  3770. } SERVICE_TYPE_INFO_ABS; 
  3771.  
  3772. typedef struct _SESSION_BUFFER { 
  3773.   UCHAR lsn; 
  3774.   UCHAR state; 
  3775.   UCHAR local_name[NCBNAMSZ]; 
  3776.   UCHAR remote_name[NCBNAMSZ]; 
  3777.   UCHAR rcvs_outstanding; 
  3778.   UCHAR sends_outstanding; 
  3779. } SESSION_BUFFER; 
  3780.  
  3781. typedef struct _SESSION_HEADER { 
  3782.   UCHAR sess_name; 
  3783.   UCHAR num_sess; 
  3784.   UCHAR rcv_dg_outstanding; 
  3785.   UCHAR rcv_any_outstanding; 
  3786. } SESSION_HEADER; 
  3787.  
  3788. typedef struct _SET_PARTITION_INFORMATION { 
  3789.   BYTE PartitionType; 
  3790. } SET_PARTITION_INFORMATION ; 
  3791.  
  3792. typedef enum tagSHCONTF { 
  3793.   SHCONTF_FOLDERS = 32,         
  3794.   SHCONTF_NONFOLDERS = 64,      
  3795.   SHCONTF_INCLUDEHIDDEN = 128,  
  3796. } SHCONTF; 
  3797.  
  3798. typedef struct _SHFILEINFO { 
  3799.   HICON hIcon;                   
  3800.   int   iIcon;                   
  3801.   DWORD dwAttributes;            
  3802.   char  szDisplayName[MAX_PATH]; 
  3803.   char  szTypeName[80];          
  3804. } SHFILEINFO; 
  3805.  
  3806. typedef WORD FILEOP_FLAGS; 
  3807. typedef struct _SHFILEOPSTRUCT { 
  3808.   HWND         hwnd;                  
  3809.   UINT         wFunc;                 
  3810.   LPCSTR       pFrom;                 
  3811.   LPCSTR       pTo;                   
  3812.   FILEOP_FLAGS fFlags;                
  3813.   WINBOOL         fAnyOperationsAborted; 
  3814.   LPVOID       hNameMappings;         
  3815.   LPCSTR       lpszProgressTitle;     
  3816. } SHFILEOPSTRUCT,   *LPSHFILEOPSTRUCT; 
  3817.  
  3818. typedef enum tagSHGDN { 
  3819.   SHGDN_NORMAL = 0,           
  3820.   SHGDN_INFOLDER = 1,         
  3821.   SHGDN_FORPARSING = 0x8000,  
  3822. } SHGNO; 
  3823.  
  3824. typedef struct _SHNAMEMAPPING { 
  3825.   LPSTR pszOldPath; 
  3826.   LPSTR pszNewPath; 
  3827.   int   cchOldPath; 
  3828.   int   cchNewPath; 
  3829. } SHNAMEMAPPING,   *LPSHNAMEMAPPING; 
  3830.  
  3831. typedef struct _SID_AND_ATTRIBUTES { 
  3832.   PSID  Sid; 
  3833.   DWORD Attributes; 
  3834. } SID_AND_ATTRIBUTES ; 
  3835.  
  3836. typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
  3837. typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
  3838.  
  3839. typedef struct _SINGLE_LIST_ENTRY { 
  3840.   struct _SINGLE_LIST_ENTRY *Next; 
  3841. } SINGLE_LIST_ENTRY; 
  3842.  
  3843. typedef struct tagSOUNDSENTRY {  
  3844.   UINT cbSize; 
  3845.   DWORD dwFlags; 
  3846.   DWORD iFSTextEffect; 
  3847.   DWORD iFSTextEffectMSec; 
  3848.   DWORD iFSTextEffectColorBits; 
  3849.   DWORD iFSGrafEffect; 
  3850.   DWORD iFSGrafEffectMSec; 
  3851.   DWORD iFSGrafEffectColor; 
  3852.   DWORD iWindowsEffect; 
  3853.   DWORD iWindowsEffectMSec; 
  3854.   LPTSTR lpszWindowsEffectDLL; 
  3855.   DWORD iWindowsEffectOrdinal; 
  3856. } SOUNDSENTRY, *LPSOUNDSENTRY; 
  3857.  
  3858. typedef struct _STARTUPINFO { 
  3859.   DWORD   cb; 
  3860.   LPTSTR  lpReserved; 
  3861.   LPTSTR  lpDesktop; 
  3862.   LPTSTR  lpTitle; 
  3863.   DWORD   dwX; 
  3864.   DWORD   dwY; 
  3865.   DWORD   dwXSize; 
  3866.   DWORD   dwYSize; 
  3867.   DWORD   dwXCountChars; 
  3868.   DWORD   dwYCountChars; 
  3869.   DWORD   dwFillAttribute; 
  3870.   DWORD   dwFlags; 
  3871.   WORD    wShowWindow; 
  3872.   WORD    cbReserved2; 
  3873.   LPBYTE  lpReserved2; 
  3874.   HANDLE  hStdInput; 
  3875.   HANDLE  hStdOutput; 
  3876.   HANDLE  hStdError; 
  3877. } STARTUPINFO, *LPSTARTUPINFO; 
  3878.  
  3879. typedef struct tagSTICKYKEYS {  
  3880.   DWORD cbSize; 
  3881.   DWORD dwFlags; 
  3882. } STICKYKEYS, *LPSTICKYKEYS; 
  3883.  
  3884. typedef struct _STRRET { 
  3885.   UINT uType; 
  3886.   union 
  3887.     { 
  3888.       LPWSTR pOleStr;        
  3889.       UINT   uOffset;        
  3890.       char   cStr[MAX_PATH]; 
  3891.     } DUMMYUNIONNAME; 
  3892. } STRRET, *LPSTRRET; 
  3893.  
  3894. typedef struct _tagSTYLEBUF {
  3895.   DWORD  dwStyle;           
  3896.   CHAR  szDescription[32];  
  3897. } STYLEBUF, *LPSTYLEBUF;
  3898.  
  3899. typedef struct tagSTYLESTRUCT {  
  3900.   DWORD styleOld;    
  3901.   DWORD styleNew;    
  3902. } STYLESTRUCT, * LPSTYLESTRUCT; 
  3903.  
  3904. typedef struct _SYSTEM_AUDIT_ACE { 
  3905.   ACE_HEADER  Header; 
  3906.   ACCESS_MASK Mask; 
  3907.   DWORD       SidStart; 
  3908. } SYSTEM_AUDIT_ACE; 
  3909.  
  3910. typedef struct _SYSTEM_INFO
  3911.   union
  3912.     {
  3913.       DWORD dwOemID;
  3914.       struct
  3915.         {
  3916.           WORD wProcessorArchitecture;
  3917.           WORD wReserved;
  3918.         }
  3919.       s;
  3920.     }
  3921.   u;
  3922.   DWORD  dwPageSize; 
  3923.   LPVOID lpMinimumApplicationAddress; 
  3924.   LPVOID lpMaximumApplicationAddress; 
  3925.   DWORD  dwActiveProcessorMask; 
  3926.   DWORD  dwNumberOfProcessors; 
  3927.   DWORD  dwProcessorType; 
  3928.   DWORD  dwAllocationGranularity; 
  3929.   WORD  wProcessorLevel; 
  3930.   WORD  wProcessorRevision; 
  3931. } SYSTEM_INFO, *LPSYSTEM_INFO; 
  3932.  
  3933. typedef struct _SYSTEM_POWER_STATUS {
  3934.   BYTE ACLineStatus;           
  3935.   BYTE  BatteryFlag;           
  3936.   BYTE  BatteryLifePercent;    
  3937.   BYTE  Reserved1;             
  3938.   DWORD  BatteryLifeTime;      
  3939.   DWORD  BatteryFullLifeTime;  
  3940. } SYSTEM_POWER_STATUS;
  3941. typedef struct SYSTEM_POWER_STATUS *LPSYSTEM_POWER_STATUS;
  3942.  
  3943. typedef struct _TAPE_ERASE { 
  3944.   ULONG Type; 
  3945. } TAPE_ERASE; 
  3946.  
  3947. typedef struct _TAPE_GET_DRIVE_PARAMETERS { 
  3948.   BOOLEAN ECC; 
  3949.   BOOLEAN Compression; 
  3950.   BOOLEAN DataPadding; 
  3951.   BOOLEAN ReportSetmarks; 
  3952.   ULONG   DefaultBlockSize; 
  3953.   ULONG   MaximumBlockSize; 
  3954.   ULONG   MinimumBlockSize; 
  3955.   ULONG   MaximumPartitionCount; 
  3956.   ULONG   FeaturesLow; 
  3957.   ULONG   FeaturesHigh; 
  3958.   ULONG   EOTWarningZoneSize; 
  3959. } TAPE_GET_DRIVE_PARAMETERS; 
  3960.  
  3961. typedef struct _TAPE_GET_MEDIA_PARAMETERS {  
  3962.   LARGE_INTEGER   Capacity; 
  3963.   LARGE_INTEGER   Remaining; 
  3964.   DWORD   BlockSize; 
  3965.   DWORD   PartitionCount; 
  3966.   BOOLEAN WriteProtected; 
  3967. } TAPE_GET_MEDIA_PARAMETERS; 
  3968.  
  3969. typedef struct _TAPE_GET_POSITION { 
  3970.   ULONG Type; 
  3971.   ULONG Partition; 
  3972.   ULONG OffsetLow; 
  3973.   ULONG OffsetHigh; 
  3974. } TAPE_GET_POSITION; 
  3975.  
  3976. typedef struct _TAPE_PREPARE { 
  3977.   ULONG Operation; 
  3978. } TAPE_PREPARE; 
  3979.  
  3980. typedef struct _TAPE_SET_DRIVE_PARAMETERS { 
  3981.   BOOLEAN ECC; 
  3982.   BOOLEAN Compression; 
  3983.   BOOLEAN DataPadding; 
  3984.   BOOLEAN ReportSetmarks; 
  3985.   ULONG   EOTWarningZoneSize; 
  3986. } TAPE_SET_DRIVE_PARAMETERS; 
  3987.  
  3988. typedef struct _TAPE_SET_MEDIA_PARAMETERS { 
  3989.   ULONG BlockSize; 
  3990. } TAPE_SET_MEDIA_PARAMETERS; 
  3991.  
  3992. typedef struct _TAPE_SET_POSITION { 
  3993.   ULONG Method; 
  3994.   ULONG Partition; 
  3995.   ULONG OffsetLow; 
  3996.   ULONG OffsetHigh; 
  3997. } TAPE_SET_POSITION; 
  3998.  
  3999. typedef struct _TAPE_WRITE_MARKS { 
  4000.   ULONG Type; 
  4001.   ULONG Count; 
  4002. } TAPE_WRITE_MARKS; 
  4003.  
  4004. typedef struct {  
  4005.   HINSTANCE hInst; 
  4006.   UINT nID; 
  4007. } TBADDBITMAP, *LPTBADDBITMAP; 
  4008.  
  4009. typedef struct _TBBUTTON { 
  4010.   int iBitmap; 
  4011.   int idCommand; 
  4012.   BYTE fsState; 
  4013.   BYTE fsStyle; 
  4014.   DWORD dwData; 
  4015.   int iString; 
  4016. } TBBUTTON,  * PTBBUTTON,  * LPTBBUTTON; 
  4017. typedef const TBBUTTON  * LPCTBBUTTON; 
  4018.  
  4019. typedef struct { 
  4020.   NMHDR hdr; 
  4021.   int iItem; 
  4022.   TBBUTTON tbButton; 
  4023.   int cchText; 
  4024.   LPTSTR pszText; 
  4025. } TBNOTIFY,  *LPTBNOTIFY; 
  4026.  
  4027. typedef struct { 
  4028.   HKEY hkr; 
  4029.   LPCTSTR pszSubKey; 
  4030.   LPCTSTR pszValueName; 
  4031. } TBSAVEPARAMS; 
  4032.  
  4033. typedef struct _TC_HITTESTINFO { 
  4034.   POINT pt;     
  4035.   UINT  flags;  
  4036. } TC_HITTESTINFO; 
  4037.  
  4038. typedef struct _TC_ITEM { 
  4039.   UINT mask;         
  4040.   UINT lpReserved1;  
  4041.   UINT lpReserved2;  
  4042.   LPTSTR pszText;     
  4043.   int cchTextMax;    
  4044.   int iImage;        
  4045.   LPARAM lParam;     
  4046. } TC_ITEM; 
  4047.  
  4048. typedef struct _TC_ITEMHEADER { 
  4049.   UINT mask;         
  4050.   UINT lpReserved1;  
  4051.   UINT lpReserved2;  
  4052.   LPTSTR pszText;     
  4053.   int cchTextMax;    
  4054.   int iImage;        
  4055. } TC_ITEMHEADER; 
  4056.  
  4057. typedef struct _TC_KEYDOWN { 
  4058.   NMHDR hdr;    
  4059.   WORD wVKey;   
  4060.   UINT flags;
  4061. } TC_KEYDOWN; 
  4062.  
  4063. typedef struct _textrange { 
  4064.   CHARRANGE chrg; 
  4065.   LPSTR lpstrText; 
  4066. } TEXTRANGE; 
  4067.  
  4068. typedef struct _TIME_ZONE_INFORMATION { 
  4069.   LONG       Bias; 
  4070.   WCHAR      StandardName[ 32 ]; 
  4071.   SYSTEMTIME StandardDate; 
  4072.   LONG       StandardBias; 
  4073.   WCHAR      DaylightName[ 32 ]; 
  4074.   SYSTEMTIME DaylightDate; 
  4075.   LONG       DaylightBias; 
  4076. } TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION; 
  4077.  
  4078. typedef struct tagTOGGLEKEYS {   
  4079.   DWORD cbSize; 
  4080.   DWORD dwFlags; 
  4081. } TOGGLEKEYS; 
  4082.  
  4083. typedef struct _TOKEN_SOURCE {
  4084.   CHAR SourceName[8]; 
  4085.   LUID SourceIdentifier; 
  4086. } TOKEN_SOURCE; 
  4087.  
  4088. typedef struct _TOKEN_CONTROL { 
  4089.   LUID TokenId; 
  4090.   LUID AuthenticationId; 
  4091.   LUID ModifiedId; 
  4092.   TOKEN_SOURCE TokenSource; 
  4093. } TOKEN_CONTROL ; 
  4094.  
  4095. typedef struct _TOKEN_DEFAULT_DACL {  
  4096.   PACL DefaultDacl; 
  4097. } TOKEN_DEFAULT_DACL; 
  4098.  
  4099. typedef struct _TOKEN_GROUPS { 
  4100.   DWORD GroupCount; 
  4101.   SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; 
  4102. } TOKEN_GROUPS, *PTOKEN_GROUPS, *LPTOKEN_GROUPS; 
  4103.  
  4104. typedef struct _TOKEN_OWNER { 
  4105.   PSID Owner; 
  4106. } TOKEN_OWNER; 
  4107.  
  4108. typedef struct _TOKEN_PRIMARY_GROUP { 
  4109.   PSID PrimaryGroup; 
  4110. } TOKEN_PRIMARY_GROUP; 
  4111.  
  4112. typedef struct _TOKEN_PRIVILEGES { 
  4113.   DWORD PrivilegeCount; 
  4114.   LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; 
  4115. } TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES, *LPTOKEN_PRIVILEGES; 
  4116.  
  4117. typedef struct _TOKEN_STATISTICS { 
  4118.   LUID  TokenId; 
  4119.   LUID  AuthenticationId; 
  4120.   LARGE_INTEGER ExpirationTime; 
  4121.   TOKEN_TYPE    TokenType; 
  4122.   SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 
  4123.   DWORD DynamicCharged; 
  4124.   DWORD DynamicAvailable; 
  4125.   DWORD GroupCount; 
  4126.   DWORD PrivilegeCount; 
  4127.   LUID  ModifiedId; 
  4128. } TOKEN_STATISTICS; 
  4129.  
  4130. typedef struct _TOKEN_USER { 
  4131.   SID_AND_ATTRIBUTES User; 
  4132. } TOKEN_USER; 
  4133.  
  4134. typedef struct {  
  4135.   UINT      cbSize;    
  4136.   UINT      uFlags;    
  4137.   HWND      hwnd;      
  4138.   UINT      uId;       
  4139.   RECT      rect;      
  4140.   HINSTANCE hinst;     
  4141.   LPTSTR     lpszText;  
  4142. } TOOLINFO,   *PTOOLINFO,   *LPTOOLINFO; 
  4143.  
  4144. typedef struct { 
  4145.   NMHDR     hdr;        
  4146.   LPTSTR    lpszText;   
  4147.   char      szText[80]; 
  4148.   HINSTANCE hinst;      
  4149.   UINT      uFlags;     
  4150. } TOOLTIPTEXT,   *LPTOOLTIPTEXT; 
  4151.  
  4152.  
  4153. #if 0
  4154. typedef LONG (WINAPI *PTOP_LEVEL_EXCEPTION_FILTER)
  4155.   (struct _EXCEPTION_POINTERS *ExceptionInfo);
  4156.  
  4157. typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
  4158. #endif
  4159.  
  4160. typedef struct tagTPMPARAMS { 
  4161.   UINT cbSize; 
  4162.   RECT rcExclude; 
  4163. } TPMPARAMS,   *LPTPMPARAMS; 
  4164.  
  4165. typedef struct _TRANSMIT_FILE_BUFFERS {  
  4166.   PVOID Head; 
  4167.   DWORD HeadLength; 
  4168.   PVOID Tail; 
  4169.   DWORD TailLength; 
  4170. } TRANSMIT_FILE_BUFFERS; 
  4171.  
  4172. typedef struct _TT_HITTESTINFO { 
  4173.   HWND hwnd;   
  4174.   POINT pt;    
  4175.   TOOLINFO ti; 
  4176. } TTHITTESTINFO,   * LPHITTESTINFO; 
  4177.  
  4178. typedef struct tagTTPOLYCURVE { 
  4179.   WORD    wType; 
  4180.   WORD    cpfx; 
  4181.   POINTFX apfx[1]; 
  4182. } TTPOLYCURVE,  * LPTTPOLYCURVE; 
  4183.  
  4184. typedef struct _TTPOLYGONHEADER { 
  4185.   DWORD   cb; 
  4186.   DWORD   dwType; 
  4187.   POINTFX pfxStart; 
  4188. } TTPOLYGONHEADER,  * LPTTPOLYGONHEADER; 
  4189.  
  4190. typedef struct _TV_DISPINFO { 
  4191.   NMHDR   hdr;  
  4192.   TV_ITEM item;  
  4193. } TV_DISPINFO; 
  4194.  
  4195. typedef struct _TVHITTESTINFO { 
  4196.   POINT     pt;     
  4197.   UINT      flags;  
  4198.   HTREEITEM hItem;  
  4199. } TV_HITTESTINFO,   *LPTV_HITTESTINFO; 
  4200.  
  4201. typedef struct _TV_INSERTSTRUCT { 
  4202.   HTREEITEM hParent;       
  4203.   HTREEITEM hInsertAfter;  
  4204.   TV_ITEM   item;          
  4205. } TV_INSERTSTRUCT,   *LPTV_INSERTSTRUCT; 
  4206.  
  4207. typedef struct _TV_KEYDOWN {
  4208.   NMHDR hdr;    
  4209.   WORD  wVKey;  
  4210.   UINT  flags;  
  4211. } TV_KEYDOWN; 
  4212.  
  4213. typedef struct _TV_SORTCB { 
  4214.   HTREEITEM    hParent;       
  4215.   PFNTVCOMPARE lpfnCompare;   
  4216.   LPARAM       lParam;        
  4217. } TV_SORTCB,   *LPTV_SORTCB;  
  4218.  
  4219. typedef struct { 
  4220.   UINT nSec;   
  4221.   UINT nInc;   
  4222. } UDACCEL; 
  4223.  
  4224. typedef struct _ULARGE_INTEGER { 
  4225.   DWORD LowPart; 
  4226.   DWORD HighPart; 
  4227. } ULARGE_INTEGER, *PULARGE_INTEGER; 
  4228.  
  4229. typedef struct _UNIVERSAL_NAME_INFO { 
  4230.   LPTSTR  lpUniversalName; 
  4231. } UNIVERSAL_NAME_INFO; 
  4232.  
  4233. typedef struct tagUSEROBJECTFLAGS { 
  4234.   WINBOOL fInherit; 
  4235.   WINBOOL fReserved; 
  4236.   DWORD dwFlags; 
  4237. } USEROBJECTFLAGS; 
  4238.  
  4239. typedef struct value_ent {
  4240.     LPTSTR   ve_valuename;
  4241.     DWORD ve_valuelen;
  4242.     DWORD ve_valueptr;
  4243.     DWORD ve_type;
  4244. } VALENT, *PVALENT;
  4245.  
  4246. typedef struct _VERIFY_INFORMATION { 
  4247.   LARGE_INTEGER  StartingOffset; 
  4248.   DWORD  Length; 
  4249. } VERIFY_INFORMATION ; 
  4250.  
  4251. typedef struct _VS_FIXEDFILEINFO { 
  4252.   DWORD dwSignature; 
  4253.   DWORD dwStrucVersion; 
  4254.   DWORD dwFileVersionMS; 
  4255.   DWORD dwFileVersionLS; 
  4256.   DWORD dwProductVersionMS; 
  4257.   DWORD dwProductVersionLS; 
  4258.   DWORD dwFileFlagsMask; 
  4259.   DWORD dwFileFlags; 
  4260.   DWORD dwFileOS; 
  4261.   DWORD dwFileType; 
  4262.   DWORD dwFileSubtype; 
  4263.   DWORD dwFileDateMS; 
  4264.   DWORD dwFileDateLS; 
  4265. } VS_FIXEDFILEINFO; 
  4266.  
  4267. typedef struct _WIN32_FIND_DATA { 
  4268.   DWORD dwFileAttributes; 
  4269.   FILETIME ftCreationTime; 
  4270.   FILETIME ftLastAccessTime; 
  4271.   FILETIME ftLastWriteTime; 
  4272.   DWORD    nFileSizeHigh; 
  4273.   DWORD    nFileSizeLow; 
  4274.   DWORD    dwReserved0; 
  4275.   DWORD    dwReserved1; 
  4276.   TCHAR    cFileName[ MAX_PATH ]; 
  4277.   TCHAR    cAlternateFileName[ 14 ]; 
  4278. } WIN32_FIND_DATA, *LPWIN32_FIND_DATA, *PWIN32_FIND_DATA; 
  4279.  
  4280. typedef struct _WIN32_STREAM_ID { 
  4281.   DWORD dwStreamId; 
  4282.   DWORD dwStreamAttributes; 
  4283.   LARGE_INTEGER Size; 
  4284.   DWORD dwStreamNameSize; 
  4285.   WCHAR *cStreamName ; 
  4286. } WIN32_STREAM_ID;
  4287.  
  4288. typedef struct _WINDOWPLACEMENT {  
  4289.   UINT  length;               
  4290.   UINT  flags;                
  4291.   UINT  showCmd;              
  4292.   POINT ptMinPosition;        
  4293.   POINT ptMaxPosition;        
  4294.   RECT  rcNormalPosition;     
  4295. } WINDOWPLACEMENT; 
  4296.  
  4297. typedef struct _WNDCLASS {  
  4298.   UINT    style; 
  4299.   WNDPROC lpfnWndProc; 
  4300.   int     cbClsExtra; 
  4301.   int     cbWndExtra; 
  4302.   HANDLE  hInstance; 
  4303.   HICON   hIcon; 
  4304.   HCURSOR hCursor; 
  4305.   HBRUSH  hbrBackground; 
  4306.   LPCTSTR lpszMenuName; 
  4307.   LPCTSTR lpszClassName; 
  4308. } WNDCLASS, *LPWNDCLASS; 
  4309.  
  4310. typedef struct _WNDCLASSEX { 
  4311.   UINT    cbSize; 
  4312.   UINT    style; 
  4313.   WNDPROC lpfnWndProc; 
  4314.   int     cbClsExtra; 
  4315.   int     cbWndExtra; 
  4316.   HANDLE  hInstance; 
  4317.   HICON   hIcon; 
  4318.   HCURSOR hCursor; 
  4319.   HBRUSH  hbrBackground; 
  4320.   LPCTSTR lpszMenuName; 
  4321.   LPCTSTR lpszClassName; 
  4322.   HICON   hIconSm; 
  4323. } WNDCLASSEX, *LPWNDCLASSEX; 
  4324.  
  4325. typedef struct _CONNECTDLGSTRUCT {
  4326.   DWORD cbStructure;
  4327.   HWND hwndOwner;
  4328.   LPNETRESOURCE lpConnRes;
  4329.   DWORD dwFlags;
  4330.   DWORD dwDevNum;
  4331. } CONNECTDLGSTRUCT, *LPCONNECTDLGSTRUCT;
  4332.  
  4333. typedef struct _DISCDLGSTRUCT {
  4334.   DWORD           cbStructure;
  4335.   HWND            hwndOwner;
  4336.   LPTSTR           lpLocalName;
  4337.   LPTSTR           lpRemoteName;
  4338.   DWORD           dwFlags;
  4339. } DISCDLGSTRUCT, *LPDISCDLGSTRUCT;
  4340.  
  4341. typedef struct _NETINFOSTRUCT{
  4342.     DWORD cbStructure;
  4343.     DWORD dwProviderVersion;
  4344.     DWORD dwStatus;
  4345.     DWORD dwCharacteristics;
  4346.     DWORD dwHandle;
  4347.     WORD  wNetType;
  4348.     DWORD dwPrinters;
  4349.     DWORD dwDrives;
  4350. } NETINFOSTRUCT, *LPNETINFOSTRUCT;
  4351.  
  4352. typedef struct _NETCONNECTINFOSTRUCT{
  4353.   DWORD cbStructure;
  4354.   DWORD dwFlags;
  4355.   DWORD dwSpeed;
  4356.   DWORD dwDelay;
  4357.   DWORD dwOptDataSize;
  4358. } NETCONNECTINFOSTRUCT, *LPNETCONNECTINFOSTRUCT;
  4359.  
  4360. typedef int CALLBACK (*ENUMMETAFILEPROC) (HDC, HANDLETABLE, 
  4361.                       METARECORD, int, LPARAM);
  4362. typedef int CALLBACK (*ENHMETAFILEPROC) (HDC, HANDLETABLE, 
  4363.                      ENHMETARECORD, int, LPARAM);
  4364.  
  4365. typedef int CALLBACK (*ENUMFONTSPROC) (LPLOGFONT, LPTEXTMETRIC, DWORD, LPARAM);
  4366. typedef int CALLBACK (*FONTENUMPROC) (ENUMLOGFONT *, NEWTEXTMETRIC *, 
  4367.                       int, LPARAM);
  4368. typedef int CALLBACK (*FONTENUMEXPROC) (ENUMLOGFONTEX *, NEWTEXTMETRICEX *, 
  4369.                       int, LPARAM);
  4370.  
  4371. typedef VOID CALLBACK (*LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD, DWORD, 
  4372.                               LPOVERLAPPED);
  4373.  
  4374. /*
  4375.   Structures for the extensions to OpenGL
  4376.   */
  4377. typedef struct _POINTFLOAT 
  4378. {
  4379.   FLOAT   x;
  4380.   FLOAT   y;
  4381. } POINTFLOAT, *PPOINTFLOAT;
  4382.  
  4383. typedef struct _GLYPHMETRICSFLOAT
  4384. {
  4385.   FLOAT       gmfBlackBoxX;
  4386.   FLOAT       gmfBlackBoxY;
  4387.   POINTFLOAT  gmfptGlyphOrigin;
  4388.   FLOAT       gmfCellIncX;
  4389.   FLOAT       gmfCellIncY;
  4390. } GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT;
  4391.  
  4392. typedef struct tagLAYERPLANEDESCRIPTOR
  4393. {
  4394.   WORD  nSize; 
  4395.   WORD  nVersion; 
  4396.   DWORD dwFlags; 
  4397.   BYTE  iPixelType; 
  4398.   BYTE  cColorBits; 
  4399.   BYTE  cRedBits; 
  4400.   BYTE  cRedShift; 
  4401.   BYTE  cGreenBits; 
  4402.   BYTE  cGreenShift; 
  4403.   BYTE  cBlueBits; 
  4404.   BYTE  cBlueShift; 
  4405.   BYTE  cAlphaBits; 
  4406.   BYTE  cAlphaShift; 
  4407.   BYTE  cAccumBits; 
  4408.   BYTE  cAccumRedBits; 
  4409.   BYTE  cAccumGreenBits; 
  4410.   BYTE  cAccumBlueBits; 
  4411.   BYTE  cAccumAlphaBits; 
  4412.   BYTE  cDepthBits; 
  4413.   BYTE  cStencilBits; 
  4414.   BYTE  cAuxBuffers; 
  4415.   BYTE  iLayerPlane;
  4416.   BYTE  bReserved; 
  4417.   COLORREF crTransparent; 
  4418. } LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR; 
  4419.  
  4420. typedef struct tagPIXELFORMATDESCRIPTOR
  4421. {
  4422.   WORD  nSize;
  4423.   WORD  nVersion;
  4424.   DWORD dwFlags;
  4425.   BYTE  iPixelType;
  4426.   BYTE  cColorBits;
  4427.   BYTE  cRedBits;
  4428.   BYTE  cRedShift;
  4429.   BYTE  cGreenBits;
  4430.   BYTE  cGreenShift;
  4431.   BYTE  cBlueBits;
  4432.   BYTE  cBlueShift;
  4433.   BYTE  cAlphaBits;
  4434.   BYTE  cAlphaShift;
  4435.   BYTE  cAccumBits;
  4436.   BYTE  cAccumRedBits;
  4437.   BYTE  cAccumGreenBits;
  4438.   BYTE  cAccumBlueBits;
  4439.   BYTE  cAccumAlphaBits;
  4440.   BYTE  cDepthBits;
  4441.   BYTE  cStencilBits;
  4442.   BYTE  cAuxBuffers;
  4443.   BYTE  iLayerType;
  4444.   BYTE  bReserved;
  4445.   DWORD dwLayerMask;
  4446.   DWORD dwVisibleMask;
  4447.   DWORD dwDamageMask;
  4448. } PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
  4449.  
  4450. typedef struct
  4451. {
  4452.   LPWSTR    usri2_name;
  4453.   LPWSTR    usri2_password;
  4454.   DWORD     usri2_password_age;
  4455.   DWORD     usri2_priv;
  4456.   LPWSTR    usri2_home_dir;
  4457.   LPWSTR    usri2_comment;
  4458.   DWORD     usri2_flags;
  4459.   LPWSTR    usri2_script_path;
  4460.   DWORD     usri2_auth_flags;
  4461.   LPWSTR    usri2_full_name;
  4462.   LPWSTR    usri2_usr_comment;
  4463.   LPWSTR    usri2_parms;
  4464.   LPWSTR    usri2_workstations;
  4465.   DWORD     usri2_last_logon;
  4466.   DWORD     usri2_last_logoff;
  4467.   DWORD     usri2_acct_expires;
  4468.   DWORD     usri2_max_storage;
  4469.   DWORD     usri2_units_per_week;
  4470.   PBYTE     usri2_logon_hours;
  4471.   DWORD     usri2_bad_pw_count;
  4472.   DWORD     usri2_num_logons;
  4473.   LPWSTR    usri2_logon_server;
  4474.   DWORD     usri2_country_code;
  4475.   DWORD     usri2_code_page;
  4476. } USER_INFO_2, *PUSER_INFO_2, *LPUSER_INFO_2;
  4477.  
  4478. typedef struct
  4479. {
  4480.   LPWSTR    usri0_name;
  4481. } USER_INFO_0, *PUSER_INFO_0, *LPUSER_INFO_0;
  4482.  
  4483. typedef struct
  4484. {
  4485.   LPWSTR    usri3_name;
  4486.   LPWSTR    usri3_password;
  4487.   DWORD     usri3_password_age;
  4488.   DWORD     usri3_priv;
  4489.   LPWSTR    usri3_home_dir;
  4490.   LPWSTR    usri3_comment;
  4491.   DWORD     usri3_flags;
  4492.   LPWSTR    usri3_script_path;
  4493.   DWORD     usri3_auth_flags;
  4494.   LPWSTR    usri3_full_name;
  4495.   LPWSTR    usri3_usr_comment;
  4496.   LPWSTR    usri3_parms;
  4497.   LPWSTR    usri3_workstations;
  4498.   DWORD     usri3_last_logon;
  4499.   DWORD     usri3_last_logoff;
  4500.   DWORD     usri3_acct_expires;
  4501.   DWORD     usri3_max_storage;
  4502.   DWORD     usri3_units_per_week;
  4503.   PBYTE     usri3_logon_hours;
  4504.   DWORD     usri3_bad_pw_count;
  4505.   DWORD     usri3_num_logons;
  4506.   LPWSTR    usri3_logon_server;
  4507.   DWORD     usri3_country_code;
  4508.   DWORD     usri3_code_page;
  4509.   DWORD     usri3_user_id;
  4510.   DWORD     usri3_primary_group_id;
  4511.   LPWSTR    usri3_profile;
  4512.   LPWSTR    usri3_home_dir_drive;
  4513.   DWORD     usri3_password_expired;
  4514. } USER_INFO_3, *PUSER_INFO_3, *LPUSER_INFO_3;
  4515.  
  4516. typedef struct
  4517. {
  4518.   LPWSTR   grpi2_name;
  4519.   LPWSTR   grpi2_comment;
  4520.   DWORD    grpi2_group_id;
  4521.   DWORD    grpi2_attributes;
  4522. } GROUP_INFO_2, *PGROUP_INFO_2;
  4523.  
  4524. typedef struct
  4525. {
  4526.   LPWSTR   lgrpi0_name;
  4527. } LOCALGROUP_INFO_0, *PLOCALGROUP_INFO_0, *LPLOCALGROUP_INFO_0;
  4528.  
  4529. #ifdef __cplusplus
  4530. }
  4531. #endif /* __cplusplus */
  4532.  
  4533. #endif /* _GNU_H_WINDOWS32_STRUCTURES */
  4534.  
  4535.